HeadFirsts设计模式中的Duck
来源:互联网 发布:premium知乎 编辑:程序博客网 时间:2024/04/30 13:42
HeadsFirst中开始的Duck实现模式是采用的策略模式,在讲解Duck的实现过程,该书提到了设计模式的两个规则,一是:封装不变的,分离变化的,二是:针对接口编程而不是针对实现编程。
那么Duck的实现是如何履行这两个规则的呢?首先建立一个Duck基类,以后所有的Duck子类均是派生自该基类,而在Duck中就需要考虑到那些属性是所有的Duck子类都拥有的,而那些属性是根据不同的子类而变化的,在需求中了解到所有的鸭子都是会游泳的,不同种类的鸭子叫声不同,部分鸭子具有飞行的属性。因此根据第一个规则,我们可以将游泳属性封装到Duck基类中,而将叫声以及飞行属性分离出来。那么如何分离出来呢,这里又需要用到的二个规则,针对接口编程(本人对这个说法有点模糊,不知道个人的理解是否正确)。首先将叫声和飞行属性定义为接口,在接口中约束需要实现的方法,然后根所有不同的叫声,以及飞行状态来编写具体的实现类,当实现类众多时,我们可以定义一个接口类型的变量作为具体实现类的容器。
接下来看看详细的代码:
duck基类及子类
行为接口以及其实现类
调用方式:
当出现新的需求时,我们需要在DUCK类中添加新的属性,并且需要了解该属性是不是所有的duck子类都拥有该属性,如果是所有的duck都具备该属性,我们可以再DUCK中实现,否则可以像飞行以及叫声行为那样通过接口来实现这些功能。
- HeadFirsts设计模式中的Duck
- <Head First 设计模式>:策略模式--Duck
- <Head First 设计模式>:复合模式:duck
- 设计模式之策略模式(Duck设计模式)
- 策略模式 p19 Duck
- Python 中的Duck Typing
- Javascript中的Duck Typing
- Head First设计模式学习笔记(1)——Duck与策略模式
- 策略模式-Duck的例子
- 【python】python中的多态与duck typing
- Duck Duck Go Architecture
- Duck Duck Go Architecture
- 设计模式中的设计原则
- 设计模式中的代理模式
- 设计模式中的Bridge模式
- 设计模式中的适配器模式
- jive中的设计模式
- Jive中的设计模式
- 程序员
- Swing SideBar(Swing 侧边栏)
- iPhone手机开发平台入门介绍和教程
- 程序之Spring框架
- Ehcache缓存配置
- HeadFirsts设计模式中的Duck
- 五招加速网页响应时间
- 构造函数的2句话
- 我想离开,可是缺乏勇气——身不由己……
- STL源码剖析 -- STL Alloc 的allocate和construct
- 我写我的
- 理解JPA,第二部分:JPA中的关系
- AVLTree的实作
- Linux 技巧:让进程在后台可靠运行的几种方法