策略模式--GOF的23个之一
来源:互联网 发布:java图形界面编程 弹框 编辑:程序博客网 时间:2024/04/29 21:25
策略模式--GOF的23个之一
前言:推荐《Head First 设计模式》,是它带给我设计模式,本文章均归纳来自此书,仅为学习使用,不涉及商务利益。『策略模式』定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
问题:
1、 代码在多个子类中重复。
2、 运行时的行为不容易改变。
3、 很难知道所有鸭子的全部行为。
4、 改变会牵一发动全身,造成其他鸭子不想要的改变。
5、 并非所有子类都有一个行为(并非所有鸭子都能飞)。
6、 开Flyalbe接口,造成代码无法复用。
7、 子类对同一接口有不同的实现方式(鸭子飞行的动作可能多种变化)。
层次一:找出应用中可能需要变化之处,把它们独立出来, 不要和那些不需要变化的代码混在一起。
层次二:多用组合,少用继承。
当你将两个类结合起来使用,如同本例一般,这就是组合(co m p o s i t i o n)。这种作法和『继承』不同的地方在于,鸭子的行为不是继承而来,而是和适当的行为对象『组合』而来。
『我们使用策略模式实现鸭子的各种行为。』这句话也就是告诉我们,鸭子的行为被封装进入一组类中,可以被轻易地扩充与改变。如果有需要,甚至在运行时也可以改变行为。
如有好的建议,可留言或发至笔者邮箱:fzb_xxzy@163.com
5 0
- 策略模式--GOF的23个之一
- 观察者模式—GOF的23个之一
- 装饰者模式—GOF的23个之一
- 工厂方法模式--GOF的23个之一
- 抽象工厂模式--GOF的23个之一
- 单例模式--GOF的23个之一
- GOF 23个基本的设计模式
- GOF 23个基本的设计模式
- GoF的23个经典设计模式
- GoF 的23个经典设计模式
- 简单工厂模式--不是GOF的23个的模式
- GOF之策略模式
- MM与GOF的23个设计模式
- 【转】GoF的23个经典设计模式
- GOF设计模式-策略模式
- GoF的23种模式
- GoF著作中未提到的设计模式之一: Archetype
- GOF 24种设计模式-策略模式
- php 根据url自动生成缩略图,并处理高并发问题
- setSize()和setPreferredSize(new Dimension())使用小结
- hibernate多表查询
- 逆向笔记【壹】
- 【轉】VB.NET gridview使用
- 策略模式--GOF的23个之一
- node-webkit 的学习笔记01
- iOS Dev (15) TabBarController + NavigationController基础示例
- 简单java Web Service服务端和Android客户端
- 第四十天【java虐我千百遍,我待java如初恋】
- 读《JAVA程序员全攻略》有感:第一章(其一)
- Windows清理系统垃圾完全攻略
- SQL SERVER数据库Truncate和Delete对表操作的区别
- 为共享剪贴板发愁的看过来:win7 下Virtyaobox 虚拟机LUbuntu13.10 搭建Ruby on Rails