设计模式之禅笔记-工厂方法模式
来源:互联网 发布:源码铺子 账号 编辑:程序博客网 时间:2024/06/06 12:46
工厂方法模式
工厂方法模式使用频率非常高。
Define an interface for creating an object,but let subclasses decide which class to
instantiate.Factory Method lets a class defer instantiation to subclass.
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
工厂方法模式的优点
良好的封装性,代码结构清晰。
屏蔽产品类。
工厂方法模式是典型的解耦框架。
工厂方法模式的使用场景:
工厂方法模式是new一个对象的替代品。
需要灵活的,可扩展的框架时,可以考虑采用工厂方法模式。
工厂方法模式可以用在异构项目中。
可以使用在测试驱动开发的框架下。
工厂方法模式的扩展
1.缩小为简单工厂模式
简单工厂模式(Simple Factory Pattern),也叫静态工厂模式。
缺点:工厂类的扩展比较困难,不符合开闭原则,但他仍然非常实用。
2.升级为多个工厂类
在复杂的应用中一般采用多工厂的方法,然后再增加一个协调类,避免调用者与各个子工厂交流,协调类
的作用是封装子工厂类,对高层模块提供统一的访问接口。
3.替代单例模式
public class Singleton{
//不允许通过new产生一个对象
private Singleton(){
}
}
Singleton保证不能通过正常的渠道建立一个对象,通过反射方式创建。
public class SingletonFactory{
private static Singleton singleton;
static{
try{
Class cl = Class.forName(Singleton.class.getName());
//获取无参构造
Constructor constructor = cl.getDeclaredConstructor();
//设置无参构造是可以访问的
constructor.setAccessible(true);
//产生一个实例对象
singleton = (Singleton)constructor.newInstance();
}catch (Exception e){
}
}
}
在一个项目中可以产生一个单例构造器,所有需要产生单例的类都遵循一定的规则(构造方法时private)
,然后通过扩展该框架,只要输入一个类型就可以获取唯一的一个实例。
4.延迟初始化
延迟初始化是工厂方法模式的一个扩展应用
工厂方法模式使用频率非常高。
Define an interface for creating an object,but let subclasses decide which class to
instantiate.Factory Method lets a class defer instantiation to subclass.
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
工厂方法模式的优点
良好的封装性,代码结构清晰。
屏蔽产品类。
工厂方法模式是典型的解耦框架。
工厂方法模式的使用场景:
工厂方法模式是new一个对象的替代品。
需要灵活的,可扩展的框架时,可以考虑采用工厂方法模式。
工厂方法模式可以用在异构项目中。
可以使用在测试驱动开发的框架下。
工厂方法模式的扩展
1.缩小为简单工厂模式
简单工厂模式(Simple Factory Pattern),也叫静态工厂模式。
缺点:工厂类的扩展比较困难,不符合开闭原则,但他仍然非常实用。
2.升级为多个工厂类
在复杂的应用中一般采用多工厂的方法,然后再增加一个协调类,避免调用者与各个子工厂交流,协调类
的作用是封装子工厂类,对高层模块提供统一的访问接口。
3.替代单例模式
public class Singleton{
//不允许通过new产生一个对象
private Singleton(){
}
}
Singleton保证不能通过正常的渠道建立一个对象,通过反射方式创建。
public class SingletonFactory{
private static Singleton singleton;
static{
try{
Class cl = Class.forName(Singleton.class.getName());
//获取无参构造
Constructor constructor = cl.getDeclaredConstructor();
//设置无参构造是可以访问的
constructor.setAccessible(true);
//产生一个实例对象
singleton = (Singleton)constructor.newInstance();
}catch (Exception e){
}
}
}
在一个项目中可以产生一个单例构造器,所有需要产生单例的类都遵循一定的规则(构造方法时private)
,然后通过扩展该框架,只要输入一个类型就可以获取唯一的一个实例。
4.延迟初始化
延迟初始化是工厂方法模式的一个扩展应用
阅读全文
0 0
- 设计模式笔记之---工厂方法模式
- 设计模式笔记之工厂方法模式
- 设计模式之禅笔记-工厂方法模式
- 设计模式之禅笔记--工厂模式
- 【设计模式之禅】工厂方法模式
- java设计模式笔记之工厂方法
- 笔记十三:设计模式之简单工厂模式、工厂方法模式、抽象工厂模式
- 设计模式之-工厂方法模式(学习分析笔记)
- 设计模式之02工厂方法模式(笔记)
- 菜鸟学设计模式系列笔记之工厂方法模式
- java设计模式学习笔记之工厂方法模式
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式 之 工厂方法
- 设计模式 之 工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- RESTful
- 随机生成四位不同数字
- 集合框架——Set(TreeSet实现Comparator方法排序)
- js 回到上一个页面的位置
- PAT B1025. 反转链表
- 设计模式之禅笔记-工厂方法模式
- 大文件拆分方案的java实践
- Linux--系统应用程序
- Caffe 问题记录
- Python3实现百度贴吧帖子搜索
- 你凭什么做好互联网 --读书心得
- 如何使自己变得"强大"起来
- 神经网络模型入门之模型概述
- Tinking in java枚举类型的自动贩售机