Factory Method Pattern 工厂方法模式
[TOC]
创建型设计模式
又名 Factory Pattern 工厂模式、Polymorphic Factory Pattern 多态工厂模式、Virtual Constructor Pattern 虚拟构造器模式
简介
- 将创建Product的创建过程交给专门的Factory子类来完成。
- 所有的具体工厂子类都有一个共同的抽象工厂父类。
- 工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象。目的是将产品类的实例化操作延迟到工厂子类中完成。
四种角色:Factory、Concrete Factory 、Product、Concrete Product
角色 | 个数 |
---|---|
Factory:抽象工厂 | 一个 |
Concrete Factory 具体工厂 | 多个 |
Product: 抽象产品 | 一个 |
Concrete Product:具体产品 | 多个 |
类图
优点
* 使用了面向对象的多态性,添加产品的时候无需修改抽象工厂、抽象产品、具体工厂类及其他具体产品类,完全符合开闭原则
缺点
* 新增产品,需要成对增加类(具体工厂类和具体产品类),增加了额外的开销。
* 抽象层的引入增加了系统的抽象性和理解难度,实现时可能需要用到DOM、反射等技术,增加了系统的实现难度。
应用 JDBC中connector的创建、学生、志愿者 以学雷锋的名义帮助老人买菜,换洗衣物
- JDBC中connector的创建
Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=DB;user=sa;password=");
Statement statement=conn.createStatement();
ResultSet rs=statement.executeQuery("select * from UserInfo");
- 《大话设计模式》 中举例:学生、志愿者 以学雷锋的名义帮助老人买菜,换洗衣物
不同身份的人以学雷锋的名义帮助老人,这里的角色:- Product是雷锋
- Concrete Product 是学雷锋的学生a、学雷锋的志愿者a
- Factory是雷锋工厂
- Concrete Factory 是学生工厂、志愿者工厂。
- 自己项目举例:
//todo