设计模式(十二)—— Factory Method 模式
2012-06-09 17:07
127 查看
理解:
当我们有一个类,他有多个派生类;该类中有一个对象,有多种实现方式。在该类中,我们需要使用该对象的方法,但实例化该对象是由不同的派生类确定的(象棋棋盘中是象棋对象,五子棋棋盘中是五子棋对象),因此,我们在父类中不能够进行初始化,只能够将其初始化延迟到子类当中。
实现方式是通过一个protected的createXXX()函数,让子类重写,以获得相应的实例化对象。
价值:
使得我们能够在不知道对象的具体形式的情况下,能够进行调用,可以在父类中封装一些流程。
否则,我们可能需要在父类中进行if-else 或者switch ,来进行对象的实例化。这样的话,父类必须要知道子类的信息,才能进行,使得耦合变大。
与抽象工厂对比:
抽象工厂,主要用于将对象从new的创建方式中脱离出来,使得对象的创建与使用分离开来,这样,对象要使用其他具体类进行实例化时,不会影响到使用对象的代码。
工厂模式,主要用于让类中的对象的实例化延迟到子类当中,以实现对象方法调用时的多肽效果。
因此,抽象工厂主要是提供外界使用的,让外接调用其创建对象的方法并隐藏其实现;而工厂方法主要是内部的实现方式,使用protected函数让子类重写创建对象的方法。用户可以知道是否使用了抽象工厂模式,而不会轻易知道是否使用了工厂模式。
因此,抽象工厂其名曰抽象,抽象往往是提供外界一个抽象类或者接口来定义其能够调用的方法,也意味着外界可以更清楚其方式了。
与模板方法对比:
模板方法中,也是在实现延迟到子类,使用protected的函数。但模板方法中,在父类中定义了函数调用方式、顺序,让子类来对其中的一些函数进行实现。
而工厂模式中,仅是将对象的创建延迟到子类中,同时他并没有相应的“模板”,因此,还是有一定的差别的。
当我们有一个类,他有多个派生类;该类中有一个对象,有多种实现方式。在该类中,我们需要使用该对象的方法,但实例化该对象是由不同的派生类确定的(象棋棋盘中是象棋对象,五子棋棋盘中是五子棋对象),因此,我们在父类中不能够进行初始化,只能够将其初始化延迟到子类当中。
实现方式是通过一个protected的createXXX()函数,让子类重写,以获得相应的实例化对象。
价值:
使得我们能够在不知道对象的具体形式的情况下,能够进行调用,可以在父类中封装一些流程。
否则,我们可能需要在父类中进行if-else 或者switch ,来进行对象的实例化。这样的话,父类必须要知道子类的信息,才能进行,使得耦合变大。
与抽象工厂对比:
抽象工厂,主要用于将对象从new的创建方式中脱离出来,使得对象的创建与使用分离开来,这样,对象要使用其他具体类进行实例化时,不会影响到使用对象的代码。
工厂模式,主要用于让类中的对象的实例化延迟到子类当中,以实现对象方法调用时的多肽效果。
因此,抽象工厂主要是提供外界使用的,让外接调用其创建对象的方法并隐藏其实现;而工厂方法主要是内部的实现方式,使用protected函数让子类重写创建对象的方法。用户可以知道是否使用了抽象工厂模式,而不会轻易知道是否使用了工厂模式。
因此,抽象工厂其名曰抽象,抽象往往是提供外界一个抽象类或者接口来定义其能够调用的方法,也意味着外界可以更清楚其方式了。
与模板方法对比:
模板方法中,也是在实现延迟到子类,使用protected的函数。但模板方法中,在父类中定义了函数调用方式、顺序,让子类来对其中的一些函数进行实现。
而工厂模式中,仅是将对象的创建延迟到子类中,同时他并没有相应的“模板”,因此,还是有一定的差别的。
相关文章推荐
- 设计模式之一---工厂方法模式【Factory Method模式】
- 【设计模式】工厂方法模式(Factory Method)
- Java设计模式圣经连载(02)-工厂方法(Factory Method)模式
- 设计模式之Factory method
- 设计模式 工厂方法(Factory Method Pattern)
- 设计模式之C#实现--FactoryMethod
- Java经典设计模式-创建型模式-工厂方法模式(Factory Method)
- 设计模式 - 简单工厂模式/静态工厂模式(Static Factory Method) C++实现
- java设计模式之一工厂模式(Factory Method)
- C++ 设计模式之二(Factory Method模式)
- Php设计模式之工厂模式(二)【工厂方法模式 Factory Method】
- 设计模式(四)-工厂模式(Factory Method Pattern/Factory Pattern)——将实例的生成交给子类
- java23种常用设计模式之工厂方法模式(Factory Method)2
- 设计模式-创建型模式#工厂方法FactoryMethod
- 设计模式:工厂方法模式(Factory Method)和抽象工厂模式(Abstact Factory)
- JAVA设计模式(24):创建型-工厂模式【工厂方法模式】(Factory Method)
- 设计模式--工厂方法(FactoryMethod)
- 在Java中应用设计模式--Factory Method
- 在 Java 中应用设计模式 - Factory Method
- 设计模式 工厂方法模式(Factory Method)