工厂方法模式定义
工廠方法模式(Fatory Method Pattern)是指定義一個創建對象的接口,但讓實現這個接口的類來決定實例化哪個類,工廠方
法讓類的實例化推遲到子類中進行。
Define an interface for creating an object, but let subclasses decide which class to instantiate. The Factory?method lets a class defer instantiation it uses to?subclasses.
屬于創建型設計模式。
public interface ICourseFactory {ICourse create();} public class JavaCourseFactory implements ICourseFactory {public ICourse create() {return new JavaCourse();} } public class PythonCourseFactory implements ICourseFactory {public ICourse create() {return new PythonCourse();} } public class FactoryMethodTest {public static void main(String[] args) {ICourseFactory factory = new PythonCourseFactory();ICourse course = factory.create();course.record();factory = new JavaCourseFactory();course = factory.create();course.record();}} LoggerFactory.getLogger(FactoryMethodTest.class); public static Logger getLogger(Class clazz) {return getLogger(clazz.getName()); } public static Logger getLogger(String name) {ILoggerFactory iLoggerFactory = getILoggerFactory();return iLoggerFactory.getLogger(name);} public static ILoggerFactory getILoggerFactory() {if (INITIALIZATION_STATE == UNINITIALIZED) {INITIALIZATION_STATE = ONGOING_INITIALIZATION;performInitialization();}switch (INITIALIZATION_STATE) {case SUCCESSFUL_INITIALIZATION:return StaticLoggerBinder.getSingleton().getLoggerFactory();case NOP_FALLBACK_INITIALIZATION:return NOP_FALLBACK_FACTORY;case FAILED_INITIALIZATION:throw new IllegalStateException(UNSUCCESSFUL_INIT_MSG);case ONGOING_INITIALIZATION:// support re-entrant behavior.// See also http://bugzilla.slf4j.org/show_bug.cgi?id=106return TEMP_FACTORY;}throw new IllegalStateException("Unreachable code");}?
總結
- 上一篇: 简单工厂的缺点
- 下一篇: 工厂方法模式适用场景