《设计模式》一书对Factory Method模式是这样描述的:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。
我的理解:FatoryMethod模式是一种创建型模式,定义一个用于创建对象的接口的意思是说,我们要定义一个用于创建对象的接口(或者说抽象类,实际上就是个抽象工厂abstractFactory),它的内部有一个创建对象的方法,这个方法的返回值是一个接口(或者抽象类)的类型,这个方法就是FactoryMethod;让子类决定实例化哪一个类意思是说我们要定义一个实现了该创建对象的接口(或者抽象类)的子类(具体的工厂类concreteFactory),让子类决定要创建对象的具体类型的实例(实现FactoryMethod)。下面给出一个例子,代码如下:
abstract class BallFactory{
protected abstract Ball makeBall(); //Factory Method
}
class BasketballFact extends BallFactory{
public Ball makeBall(){ //子类实现Factory Method决定实例化哪一个类的
return new Basketball();
}
}
class FootballFact extends BallFactory{
public Ball makeBall(){ //子类实现Factory Method决定实例化哪一个类的
return new Football();
}
}
class Basketball extends Ball{
public void play(){
System.out.println("play the basketball");
}
}
class Football extends Ball{
public void play(){
System.out.println("play the football");
}
}
abstract class Ball{
protected abstract void play();
}
class test{
public static void main(String[] args){
BallFactory ballFactory=new BasketballFact();
Ball basketball=ballFactory.makeBall();
basketball.play();
ballFactory=new FootballFact();
Ball football=ballFactory.makeBall();
football.play();
}
}
输出如下:
play the basketball
play the football
这个模式我在abstract Factory模式中已经使用过了,只是那时候还不知道有Factory Method这个模式,在我举例中的ResFactory类的getDisplayDrvr()和getPrintDrvr()实际上就是工厂方法。具体参见《设计模式学习笔记(五)—Abstract Factory抽象工厂模式》。
小结:Factory Method模式是一个非常常用的模式。它主要适用于:
1) 当一个类不知道它所必须创建的对象的类的时候。
2) 当一个类希望由它的子类来指定它所创建的对象的时候。
3) 当类将创建对象的职责委托给多个帮助子类中的某一个,来完成这个创建对象的任务。
分享到:
相关推荐
设计模式学习笔记,分析了GOF的23种模式和类设计的原则
Java设计模式学习笔记
我收集的设计模式的学习笔记,采用pdf格式,便于收藏和查看
各个模式都有详细的例子C#学习笔记,打开就知道了
HeadFirst设计模式学习笔记比较全面详细地讲解了13个设计模式,有利于大家更好的学习HeadFirst设计模式,希望亲们会喜欢~~~
总结了java开发中的21种设计模式,详解和例子,带书签的pdf格式,方便阅读!
设计模式学习笔记.ppt 自己写的一点学习笔记。
设计模式学习笔记,总共23个设计模式,还有几个设计原则
23种设计模式学习笔记及源码,全部原创 欢迎提出意见和建议
Head First 设计模式学习笔记。更多内容请参见文章内容。
学习Java设计模式的笔记,标注了其中重要的要点,如果有需要的小伙伴,自行下载哦
设计模式学习笔记--Flyweight享元模式.docx设计模式学习笔记--Flyweight享元模式.docx设计模式学习笔记--Flyweight享元模式.docx设计模式学习笔记--Flyweight享元模式.docx设计模式学习笔记--Flyweight享元模式.docx
代理模式学习笔记、单例模式学习笔记、命令模式、原型模式、模式特点总结。 为个人对设计模式的理解,如果有理解不一致的不要砸砖啊
设计模式学习笔记-命令模式
学习设计模式入门的好材料 简单明了,一看就懂 帮助你快速学习或是复习23种设计模式
Head.First 设计模式学习笔记.pdf Head.First 设计模式学习笔记.pdf
java设计模式的学习笔记,其中包含各种模式的代码实现
设计模式学习笔记(一)--简单工厂模式源码和类图
资源名称:设计模式C 学习笔记资源目录:【】设计模式C 学习笔记源代码【】设计模式C 学习笔记目录【】设计模式C 学习笔记(1)【】设计模式C 学习笔记(2)【】设计模式C 学习笔记(3)【】设计模式C 学习笔记(4)...
设计模式学习笔记,这里面详细的记录我学习23三种设计模式的详细过程以及实例代码哦哦