设计模式-简单工厂模式和策略模式
2016-06-27 20:25
232 查看
简单工厂模式:
简单工厂模式的思想为:根据不同参数,返回不同对象。
栗子1:spring的application.xml 就是根据参数(bean的id属性值)来获取对象的。
栗子2:计算器的设计,可以设计“运算”父类,加减乘除等等为子类,那么就可以使用该模式,根据参数(操作符)来获取“运算”子类,然后(父类的引用指向子类对象)调用子 类的“运算”方法
使用方法;创建工厂类,在工厂类对象里定义一个根据参数获取对象的方法,每当需要获取对象时,给工厂类的工厂方法传参数即可。
策略模式:
根据不同的策略,生成不同的对象。和简单工厂模式很类似。
区别:
简单工厂模式和策略模式都是根据参数获取对象,获取对象的类,叫工厂类。
不同之处在于,简单工厂模式的工厂类和工厂类生产(返回)的对象没有父子关系,而策略模式,工厂类是所有生产出的对象类的父类(或者公共接口)
那么,也可以从形式上,把策略模式看成特殊的简单工厂模式,特殊在工厂类必须是产生对象的父类。
从使用上讲,简单工厂模式可以用在任何生产出对象的情况,而策略类,要用在多态上
简单工厂模式的思想为:根据不同参数,返回不同对象。
栗子1:spring的application.xml 就是根据参数(bean的id属性值)来获取对象的。
栗子2:计算器的设计,可以设计“运算”父类,加减乘除等等为子类,那么就可以使用该模式,根据参数(操作符)来获取“运算”子类,然后(父类的引用指向子类对象)调用子 类的“运算”方法
使用方法;创建工厂类,在工厂类对象里定义一个根据参数获取对象的方法,每当需要获取对象时,给工厂类的工厂方法传参数即可。
策略模式:
根据不同的策略,生成不同的对象。和简单工厂模式很类似。
区别:
简单工厂模式和策略模式都是根据参数获取对象,获取对象的类,叫工厂类。
不同之处在于,简单工厂模式的工厂类和工厂类生产(返回)的对象没有父子关系,而策略模式,工厂类是所有生产出的对象类的父类(或者公共接口)
那么,也可以从形式上,把策略模式看成特殊的简单工厂模式,特殊在工厂类必须是产生对象的父类。
从使用上讲,简单工厂模式可以用在任何生产出对象的情况,而策略类,要用在多态上
相关文章推荐
- warning C4407: 在指向成员表示形式的不同指针之间进行转换,编译器可能生成不正确的代码
- caffe微软官方版+win7+vs2013
- 前端开发技术演进
- 设置View本身及所有子View中的Button和ImageButton的ClickListener
- [2016/06/27] LeetCode / Java - Day 05 -
- EJB概述
- android 自定义View 仪表盘 DashboardView 的实现
- R语言ggplot2绘图设置X轴刻度,字体大小及绘图区大小
- source insight 函数跟踪不了问题
- [191] Number of 1 Bits
- java中的final 关键字
- [NYIST15]括号匹配(二)(区间dp)
- 修炼?如何快速成长
- Linux线程同步之读写锁
- Spark入门(Python版)
- 每天一个Linux命令(23)--linux 目录结构(一)
- 为什么访问数据库要通过端口?
- transformClassesWithJarMergingForDebug
- sql(mysql)
- 开发板镜像烧写