java设计模式之工厂方法模式
来源:互联网 发布:辛酉政变 知乎 编辑:程序博客网 时间:2024/06/05 14:51
工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
烤鱼店之工厂模式类图:
FactoryFish中的Fish实例化延迟到子类NianYuFactory,JiYuFactory中来实例化。这是工厂方法模式和简单工厂模式的区别。
Fish类代码实现:
public class Fish { String name = "Unknow name";}
NianYu类代码实现:
public class NianYu extends Fish{ public NianYu() { // TODO Auto-generated constructor stub name = "鲶鱼"; System.out.println("一条烤"+name); }}
JiYu类代码实现:
public class JiYu extends Fish{ public JiYu() { // TODO Auto-generated constructor stub name = "鲫鱼"; System.out.println("一条烤"+name); }}
FactoryFish类代码实现:
public abstract class FactoryFish { public abstract Fish createFish(); }
NianYuFactory类代码实现:
public class NianYuFactory extends FactoryFish{ @Override public Fish createFish() { // TODO Auto-generated method stub return new NianYu(); }}
JiYuFactory类代码实现:
public class JiYuFactory extends FactoryFish{ @Override public Fish createFish() { // TODO Auto-generated method stub return new JiYu(); }}
KaoYu类代码实现:
public class KaoYu { FactoryFish factoryFish; public KaoYu(FactoryFish factoryFish){ this.factoryFish =factoryFish; } public void orderFish(){ factoryFish.createFish(); }}
FishTest类代码实现:
public class FishTest { public static void main(String[] args){ FactoryFish factoryFish = new JiYuFactory(); KaoYu kaoYu = new KaoYu(factoryFish); kaoYu.orderFish(); FactoryFish factoryFish2 = new NianYuFactory(); KaoYu kaoYu2 = new KaoYu(factoryFish2); kaoYu2.orderFish(); }}
运行结果:
一条烤鲫鱼一条烤鲶鱼
0 0
- JAVA设计模式之工厂模式之工厂方法模式
- Java设计模式之工厂方法模式
- Java设计模式之工厂方法模式
- java设计模式之工厂方法模式
- Java设计模式之工厂方法模式
- Java设计模式之工厂方法模式
- java设计模式之工厂方法模式
- Java设计模式之工厂方法模式
- Java设计模式之工厂方法模式
- Java设计模式之工厂方法模式
- 【Java设计模式】之工厂方法模式
- Java设计模式之工厂方法模式
- java设计模式之工厂方法模式
- Java设计模式之工厂方法模式
- java设计模式之"工厂方法模式"
- Java设计模式之工厂方法模式
- Java设计模式之工厂方法模式
- java之设计模式---工厂方法模式
- 最小二乘法概念简述
- codevs 舒适的路线 1001
- Matplotlib is building the font cache using fc-list. This may take a moment解决办法
- ssh2项目报错原因:浏览器栏中输入的路径不对
- 深度学习准备之Ubuntu下装显卡驱动
- java设计模式之工厂方法模式
- 蓝桥杯 算法提高 队列操作
- Helloworld
- 堆结构
- 2016届蓝桥杯牌型种类(dfs算法)
- Weekly Training Farm 22 - B - ACM-ICPC Contest (背包)
- 服务器运维——RAID
- android横竖屏切换的生命周期方法
- SpringMVC与Struts2区别与比较总结