工厂方法模式:
很多人都会与抽象工厂模式混淆在一起,工厂方法主要想表达,父类的方法或方法中调用了其他对象的方法时,有部分父类无法确定,但又想让父类完成大多开发工作,使得子类们可以最大限度的复用,又能动态的改变实现利于扩展性。
定义工厂方法类
public abstract Class Cat implements ICat(){
//抓老鼠行为
public void catchMouse(String catName){
//步骤一
system.out.println(){
catName+"抓老鼠之前,做一些准备工作";
};
//步骤二
IMouse mouse = createMouseFactory();
mouse.kill();//老鼠个儿屁了
//步骤三
system.out.println(){
catName+"抓完老鼠,再做一些扫尾工作";
};
}
//抽象方法
public abstract IMouse createMouseFactory();
}
这时,只有个父类,还是个半成品,屁事儿干不了。但它实际上却已经实现了大部分代码工作。子类们或着是使用者要“构造一个猫对象”就很简单了。继续看一下:
//我们创建一只“TOM”猫
public Class TomCat extends Cat(){
//抓老鼠行为
public IMouse createMouseFactory(){
return new JettyMouse();//返回一个“杰瑞”老鼠
}
}
调用者,想让TOM抓老鼠,那么就这么简单:
public static void main(String args[]){
ICat cat = new TomCat();
cat.catchMouse();
}
完成了,下次又需要抓一只叫“大白的老鼠”,那么和上面一样,只需要覆盖抽象方法即可。如果步骤一与步骤三的工作量很大,你就知道这是多么爽的一件事了。因为你完全没写,它就实现了,而且还能动态的指挥猫咪抓哪种老鼠,这里不提模式之间的组合,否则代码会很多,不易学习这种模式。代码语法可能有错误,全手敲的。见谅~
这就是工厂方法模式的思想,实现的方式很多,就是让父类完成大量工作,把稳定的代码写到父类中,变化的部分延迟到子类中确定!
分享到:
相关推荐
java设计模式----抽象工厂模式,简单工厂模式代码 代码内部
java设计模式--工厂模式 HeadFirst 书中的源代码
java设计模式-创建者模式-简单工厂模式。详细的讲解了什么是抽象工厂模式及应用场景和应用场景的代码事例。及各工厂模式的区别。
java设计模式-创建者模式-简单工厂模式。详细的讲解了什么是简单工长模式及应用场景和应用场景的代码事例。
Java设计模式 - 简单工厂 & 工厂方法(构建工厂)源码:FactoryModel - 详情:https://blog.csdn.net/Dream_Weave/article/details/83989879
java设计模式-创建者模式-简单工厂模式。详细的讲解了什么是工厂方法模式及应用场景和应用场景的代码事例。及各工厂模式的区别。
JAVA-设计模式-创建型模式-工厂模式
设计模式--工厂模式java例子
java常用设计模式-抽象工厂模式
java,设计模式中的一种,工厂设计模式。
简单工厂模式示例 有注释 需要的朋友可以下载研究 很简单很基础的一个设计模式
java,设计模式中的一种,抽象工厂设计模式。
Java设计模式,抽象工厂的Demo,具体的思想与实现有很多讲得很好的老师,我是看厉风行老师的视频学的,讲得不错,简单易懂
java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...
Java设计模式,简单工厂的Demo,具体的思想与实现有很多讲得很好的老师,我是看厉风行老师的视频学的,讲得不错,简单易懂
java常用设计模式-工厂模式
Java设计模式,工厂方法的Demo,具体的思想有很多讲得很好的老师,我是看厉风行老师的视频学的,讲得不错,简单易懂
JAVA设计模式-day2,请的行业大能讲得课程,涉及:创建模式(5种: 1、 工厂方法模式(Factory Method); 2、 抽象工厂模式; 3、 单例模式(Singleton) • 4、 建造者模式(Builder); 5、 原型模式(Prototype...
JAVA设计模式例程-工厂模式-的例程,看完以后基本上能对JAVA上实现简单工厂能有所了解,简单工厂还是比较容易滴,而且也是较为常用的一种设计模式。
NULL 博文链接:https://jonathan-chen.iteye.com/blog/2194091