66.设计模式笔记-工厂方法模式
来源:互联网 发布:快啊晒密软件 编辑:程序博客网 时间:2024/06/03 15:16
转载请注明出处 http://blog.csdn.net/qq_31715429/article/details/78426332
本文出自:猴菇先生的博客
1.定义:
定义一个用于创建对象的接口,让子类决定实例化哪个类。
2.使用场景:
在任何需要生成复杂对象的地方,都可以用工厂方法模式,用new就可以完成创建的对象无需使用。
3.说明:
需要产品抽象类定义产品的功能,具体产品类实现具体逻辑,工厂抽象类定义工厂的功能,
具体工厂类实现生产产品的逻辑,需要哪个产品就生成哪个产品的实例,有时候也可以利用
反射的方式更简洁的生产具体对象。
4.例子:
/** * 产品抽象类,定义产品功能 */public abstract class Computer{ public abstract void open();}
/** * 具体的产品类,可以有多个,重写抽象方法,定义业务逻辑 */public class LenovoComputer extends Computer{ @Override public void open(){ System.out.println("打开联想电脑"); }}public class AlienComputer extends Computer{ @Override public void open(){ System.out.println("打开外星人电脑"); }}public class MacComputer extends Computer{ @Override public void open(){ System.out.println("打开苹果电脑"); }}
public abstract class Factory{ /** * 某电脑类型的工厂方法 * * @param clz 电脑的类型 * * @return 具体型号的电脑对象 */ public abstract <T extends Computer> T createComputer(Class<T> clz); }
/** * 工厂的具体实现类,负责创建并返回具体产品对象 */public class ComputerFactory extends Factory{ @SuppressWarnings("unchecked") @Override public <T extends Computer> T createComputer(Class<T> clz){ Computer computer = null; try{ computer = (Computer)Class.forName(clz.getName()).newInstance(); }catch(Exception e){ e.printStackTrace(); } return (T)computer; }}
public class Test{ public static void main(String[] args){ Factory factory = new ComputerFactory(); LenovoComputer lenovo = factory.createComputer(LenovoComputer.class); lenovo.open(); AlienComputer alien = factory.createComputer(AlienComputer.class); alien.open(); MacComputer mac = factory.createComputer(MacComputer.class); mac.open(); }}
4.总结:
优点:降低了对象之间的耦合度,而且依赖于抽象的架构,其将实例化的任务交由子类去完成,有很好的拓展性。
缺点:每次添加新产品时就要编写新的产品类,同时还要引入抽象层,导致类结构的复杂化。
阅读全文
0 0
- 66.设计模式笔记-工厂方法模式
- 【设计模式】工厂方法模式学习笔记
- 大话设计模式笔记----工厂方法模式
- 设计模式笔记之---工厂方法模式
- 设计模式笔记--工厂方法模式
- 设计模式学习笔记-工厂方法模式
- 设计模式笔记之工厂方法模式
- 设计模式学习笔记--工厂方法模式
- 设计模式学习笔记-工厂方法模式
- 设计模式笔记--工厂方法模式
- Android 设计模式 笔记 - 工厂方法模式
- 2.工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)(设计模式笔记)
- 笔记十三:设计模式之简单工厂模式、工厂方法模式、抽象工厂模式
- 设计模式学习笔记——简单工厂模式、工厂方法模式、抽象工厂模式
- 设计模式学习笔记(3)工厂方法
- java设计模式笔记之工厂方法
- 设计模式 笔记 工厂方法 Factory Methon
- 设计模式笔记-工厂模式
- 英语纠音(一)
- 11.2 T3.tree(树形dp+期望)
- 1.4.7 汉明码
- 阿里云MaxCompute加速全球化布局 11月1日北京、马来西亚两地开服
- C# 调整控件Z序
- 66.设计模式笔记-工厂方法模式
- ios调试(lldb)
- 稀疏矩阵存储格式总结+存储效率对比:COO,CSR,DIA,ELL,HYB
- MySQL---索引
- HDU5044 Tree(树链剖分)
- HttpURLConnection连接网页和获取数据的使用实例
- 有关lookrotate相关的数学四元数的知识(更新待定)
- AndroidStudio与Java8
- 查看tree数据的叶子节点