工厂模式-开源代码实例
1,开源代码实例
LoggerFactory
1-1,简单工厂模式
1-2,抽象工厂模式
2,开源代码实践
2-1,流程梳理
比如有3个线程同时打印日志;
有一个线程需要去初始化日志记录器;
其他线程则不能由于日志记录器还没有初始化就不工作,所以这些线程会返回一个替代日志记录器(同一个对象),替代日志记录器使用NOPLogger打印,结果就是什么都不打印。
等到初始化的那个线程完成初始化了,这个初始化的线程会让替代日志记录器使用新的初始化的LoggerContext产生的logger去打印之前淤积的那些日志。
这样以后所有的日志都统一使用LoggerContext产生的logger去打印。
总结
工厂模式一般分为:简单工厂模式、工厂方法、抽象工厂模式;
也有人认为工厂方法是抽象工厂模式的特例,即当抽象工厂模式的工厂只生产一种产品时转变为工厂方法。
像上文的日志工厂就是工厂方法,如下图:
当工厂生产两种或以上的产品时则为抽象工厂模式。