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