《Head First 设计模式》阅读笔记(一)——策略模式

原创 2011年01月12日 08:24:00

上回将之前看过的章节都大致梳理了一遍,回过头去看的时候,发现看不懂了。。太泛。

从这篇文章起,我想一个个详细的说明,当是复习了。

 

今天,先来讲述策略模式的故事。

 

为什么要用策略模式?

这一章从一开始便告诉我们,用继承来解决扩展问题并不是最好的办法,因为一旦你需要一个新的行为时,你就必须继承出一个新类,如此,代码便会在多个子类中重复,而由于我们不清楚到底有多少行为需要定义,设计之初的父类很可能要改变,而这种改变会导致其所有的继承者都受到牵连,这是很可怕!接下来,就是讨论该如何解决这个问题了。

 

首先一个原则是,封装变化,把变化的部分提取出来,反应到这个设计模式就是将行为提取出来,单独成类,行为之间通过继承来扩展,而在实物类中,通过定义行为超类,使用时实例化行为子类的方式来使用行为。

这样的方式,使得实物可以在需要的时候,动态指定行为。

就如下面的代码一样:

 

 

OK,这,就是策略模式:定义了算法簇,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

 

读Head First设计模式有感之一:策略模式

设计模式的入门这节中,关于鸭子设计的问题。 设计一个鸭子的游戏,有各种鸭子存在。其中以鸭子叫和飞来说明问题。有的鸭子会飞,有的不会(橡皮鸭)。同样,有的鸭子会叫有的不会。 设计这个游戏时候,设...
  • worsun
  • worsun
  • 2015年11月28日 16:27
  • 430

《Head First 设计模式》整理

对《Head First 设计模式》中的常用设计模式的整理,其实很多模式我们在开发中都有用到,但是在此之前没有一种理论基础支撑自己,有了这些知识后,更有利于做好程序的设计工作,以及遇到一些设计问题时知...
  • zhangao0086
  • zhangao0086
  • 2015年04月11日 00:56
  • 3215

策略模式(Strategy Pattern)(二):HeadFirst中鸭子的实现

一、问题描述 joe上班的公司做了一套成功的模拟鸭子的游戏:SimUDuck,游戏中会出现各种鸭子,一边游泳,一边呱呱叫,由于公司竞争压力加剧,必须重新设计鸭子(Duck)类,要求是:便于产...
  • jialinqiang
  • jialinqiang
  • 2013年05月11日 09:40
  • 2825

《Head First设计模式》-策略模式C++实现

用C++实现了书中的设计鸭子飞行的例子。 鸭子类设计 #ifndef DUCK_H_ #define DUCK_H_ #include #include"Fly.h" #include"Quack...
  • a1358884804
  • a1358884804
  • 2017年01月11日 18:33
  • 278

Head First HTML与CSS 读书笔记(一)

  • u013028110
  • u013028110
  • 2014年11月27日 14:05
  • 369

Head First 设计模式——策略模式(Strategy Pattern)——Python实现

  本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议进行许可。允许非商业转载,但应注明作者及出处。 作者:liuyuan_jq2011-06-13 策略模式定义 定...
  • liuyuan_jq
  • liuyuan_jq
  • 2011年06月13日 17:41
  • 1482

图解 head first 设计模式

个人笔记,比较粗糙。详细内容请参考《head first 设计模式》 strategy 基础:抽象、封装、多态、继承 原则 封装变化:找出会变化的方面,把它们从不变的部分分离出来。 多用组合、少用继承...
  • qq_24145735
  • qq_24145735
  • 2016年07月16日 23:13
  • 3138

读《大话设计模式》和《head first 设计模式》心得

1.面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。 2.如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责...
  • fuqiaoyimeng
  • fuqiaoyimeng
  • 2013年11月10日 18:17
  • 1253

调侃《Head First设计模式》之总结篇

在之前的设计模式博客中,主要根据《Head First设计模式》谈了10个设计模式,今天来做下总结,好好梳理提炼x下精华,而且今天准备把GOF经典大作《设计模式》中的23个设计模式都总结一遍。(以下内...
  • sinat_23092639
  • sinat_23092639
  • 2015年06月27日 09:38
  • 2234

调侃《First head 设计模式》之状态模式篇

现在有个糖果控制器,它的运行状态图如下:          我们要用java来实现这个糖果控制器。首先需要用一些实例变量来表示不同的状态:          我们的思路是创建一个糖果控制器类,...
  • sinat_23092639
  • sinat_23092639
  • 2015年05月24日 10:42
  • 1102
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《Head First 设计模式》阅读笔记(一)——策略模式
举报原因:
原因补充:

(最多只允许输入30个字)