我正在点击此链接: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;
}
}
我无法理解具体日志记录类的初始化在这里发生在哪里。网关的入口点是什么?
关于接口的具体实现,文章底部有一些示例显示了如何实现它。
示例的布局方式有点欺骗性,因为 API 的调用与第一个示例更相关。请注意调用 init 的后面的测试用例。此外,您将拥有一个作者没有的日志实例,在示例中更具符号性。另一个选项是静态日志类。
编辑:请忽略这一点,这是不正确的。 我不删除的唯一原因是,我对指出它的人的评论可以继续存在。
请注意,"Log"类具有静态构造函数:
public static void InitializeLogFactory(ILogFactory logFactory)
{
Log.logFactory = logFactory;
}
第一次加载 Log
类时(第一次引用时),静态构造函数将运行,通过工厂的具体实现来初始化其logFactory
。
然后,每次调用InformationalMessage
时,都会使用具体工厂创建记录器的实例来记录消息。