0

私はこのリンクをたどっています: http://codebetter.com/jpboodhoo/2007/10/15/the-static-gateway-pattern/ ゲートウェイパターンを理解するために。

著者は、「ゲートウェイ」ロガー クラスと関連するインターフェイスのサンプルを共有しています。

public class Log
{
    private static ILogFactory logFactory;

    public static void InitializeLogFactory(ILogFactory logFactory)
    {
        Log.logFactory = logFactory;
    }

    public void InformationalMessage(string informationalMessage)
    {
        logFactory.Create().InformationalMessage(informationalMessage);
    }
}

public interface ILogFactory
{
    ILog Create();
}

public interface ILog
{
    void InformationalMessage(string message);
}

これは呼び出し API です。

public class Calculator
{                
public int Add(int number1,int number2)
{
Log.InformationalMessage("About to add two numbers");            
return number1 + number2;
}
}

具体的なロギング クラスの初期化がここで行われる場所を理解できません。ゲートウェイのエントリポイントは何ですか?

4

3 に答える 3

1

インターフェイスの具体的な実装に関しては、記事の下部に、実装方法を示す例があります。

于 2012-11-27T14:29:53.457 に答える
0

編集:これは無視してください。正しくありません。私が削除しない唯一の理由は、それを指摘した人に返信する私のコメントが残るようにするためです.

「Log」クラスには静的コンストラクターがあることに注意してください。

public static void InitializeLogFactory(ILogFactory logFactory)
    {
        Log.logFactory = logFactory;
    }

クラスが初めてLogロードされるとき (最初の参照時) に、静的コンストラクターが実行されlogFactory、ファクトリの具体的な実現で初期化されます。

次に、 が呼び出されるたびInformationalMessageに、具体的なファクトリを使用してロガーのインスタンスを作成し、メッセージをログに記録します。

于 2012-11-27T13:42:45.657 に答える