BD___工厂模式
2016-07-27 21:41
369 查看
呵呵,。。
定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到子类。。。
抽象工厂模式和工厂方法模式完全两个概念,我好像搞混了
工厂模式又分简单工厂模式,抽象工厂模式
使用简单工厂模式的优势是:让对象的调用者和对象创建过程分离,当对象调用者需要对象时,直接向工厂请求即可。从而避免了对象的调用者与对象的实现类以硬编码方式耦合,以提高系统的可维护性、可扩展性。工厂模式也有一个小小的缺陷:当产品修改时,工厂类也要做相应的修改。
实际用例:,应该对Spring IoC容器感到迷惑:它到底是简单工厂?还是抽象工厂?实际上,笔者倾向于认为Spring IoC容器是抽象工厂,因为Sping IoC容器可以包括万象,它不仅可以管理普通Bean实例,也可管理工厂实例。
以下来自, http://jameszhao1987.iteye.com/blog/1420442
使用情景:
再不确定会有多少个处理操作时应该考虑使用简单工厂模式,如针对同样的接收到的数据,处理的逻辑可能会不同,可能以后还会增加新的操作。
案例:
例如如果实现计算器的功能时,对于同样的输入数据,可能执行加、减、乘、除,甚至其他的功能。因此可以抽象出一个操作的抽象类或是接口,提供一个统一的处理方法(此处为process),然后每种操作创建出一个子类出来。而判断具体使用哪个具体的实现类是在工厂类中进行判断的(将存放操作的变量传递给工厂的生产方法)。工厂类始终返回的是这个抽象类,这样如果对原有功能进行更改或是新添加新的功能,也不会对原来的其他类做修改,只编译修改的那个类或是新的类就可以了。
这样就做到了把耦合降到最低,同时也便于维护。
注意:如果客户提出要再添加一个功能来处理这些数据,实现起来就灰常方便了
定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到子类。。。
抽象工厂模式和工厂方法模式完全两个概念,我好像搞混了
工厂模式又分简单工厂模式,抽象工厂模式
使用简单工厂模式的优势是:让对象的调用者和对象创建过程分离,当对象调用者需要对象时,直接向工厂请求即可。从而避免了对象的调用者与对象的实现类以硬编码方式耦合,以提高系统的可维护性、可扩展性。工厂模式也有一个小小的缺陷:当产品修改时,工厂类也要做相应的修改。
实际用例:,应该对Spring IoC容器感到迷惑:它到底是简单工厂?还是抽象工厂?实际上,笔者倾向于认为Spring IoC容器是抽象工厂,因为Sping IoC容器可以包括万象,它不仅可以管理普通Bean实例,也可管理工厂实例。
以下来自, http://jameszhao1987.iteye.com/blog/1420442
使用情景:
再不确定会有多少个处理操作时应该考虑使用简单工厂模式,如针对同样的接收到的数据,处理的逻辑可能会不同,可能以后还会增加新的操作。
案例:
例如如果实现计算器的功能时,对于同样的输入数据,可能执行加、减、乘、除,甚至其他的功能。因此可以抽象出一个操作的抽象类或是接口,提供一个统一的处理方法(此处为process),然后每种操作创建出一个子类出来。而判断具体使用哪个具体的实现类是在工厂类中进行判断的(将存放操作的变量传递给工厂的生产方法)。工厂类始终返回的是这个抽象类,这样如果对原有功能进行更改或是新添加新的功能,也不会对原来的其他类做修改,只编译修改的那个类或是新的类就可以了。
这样就做到了把耦合降到最低,同时也便于维护。
注意:如果客户提出要再添加一个功能来处理这些数据,实现起来就灰常方便了
相关文章推荐
- Java内部类
- 线程池ForkJoinPool
- 关于在Andoird集成开发软件中添加外部jar包的方法
- OpenCV imgproc模块
- Linux 信号(上)
- 64位和32位程序性能差别
- POJ 3253
- 剑指offer——数组中的逆序对
- 如何提高编程水平?
- linux中mysql修改编码utf8
- 第一章-了解Web及网络基础
- JAVA的String 类
- Spacemacs 的更新和回滚
- Cronolog 分割 Tomcat8 Catalina.out日志
- (一)关于对象
- 数据结构之树状数组
- 线程同步的几种方法
- C++ bitset类的使用与简介
- 营销的目的
- MySql 使用foreach标签 批量插入list中数据,主键自增,插入