《设计模式解析》 第9章 Strategy模式 复习题

原创 2012年03月29日 16:37:05

《设计模式解析》 第9章 Strategy模式 复习题

 

1、对于新的需求应对方案:

a)       修改原有代码,及所涉及的所有地方。

b)       在分支语句当中添加新的情况。

c)       使用继承,进行扩展

d)       将功能实现委托给其他类。

2、三项基本原则:

a)       “针对接口编程,而不要针对实现编程”。

b)       “优先使用对象组合,而不是类继承”。

                       i.             过多的继承容易造成类爆炸。

                     ii.             使用组合有助于类的分装,将功能集中于单个类中。

                   iii.             继承中,子类会获取父类所有方法,而不管有无需要。组合避免了继承的强耦合关系,有更大的灵活性。

c)       考虑设计中什么应该是可变的。不是考虑什么会迫使设计发生改变,而是什么能够在不引起重新设计的前提下改变。对变化的概念进行封装。”

3、Strategy意图:可以根据上下文,使用不同的业务规则和算法。

4、效果:

a)       可以不适用switch或条件语句进行规则的选择。

b)       需要使用相同的方式调用所有的算法。

 

 

1、“关注引起重新设计的原因”,会使得你在设计的时候,把这些可能的变化考虑进去,所做出的设计能够满足假设当中的变化(满足的仅仅是考虑到的变化),但这个设计并不一定是能够应对其他变化的设计。然而,需求的变化总是无法准确估计的。“考虑设计中什么应该是可变的”,并为具体到可能有哪些需求的变更,那么,你的设计就必须应对这些有可能的变化的部分,并为之设计出可应对变化的方案,以不变应万变。

2、这种方式

a)       会导致代码的冗余,而导致今后如果要进行代码修改时,要将所有的代码进行修改,并且要考虑到所有地方相关的影响。

b)       会导致程序的低内聚,一些本不该又自己处理的事务,却自己进行处理。没有遵循“一个类一个职责”的原则。

3、“分支蔓延”,switch或者if else 中,由于不断增加新的判断,而导致语句的结构越来越庞大。

4、将变化进行封装,使得外界对于他的变化一无所知。便于代码复用,程序的扩展。并使得职责的转移更容易。

5、以下:

a)       过多的继承容易造成类爆炸。

b)       使用组合有助于类的封装,将功能集中于单个类中。

c)       继承中,子类会获取父类所有方法,而不管有无需要。组合避免了继承的强耦合关系,有更大的灵活性。

 

1、由于某些变化,导致程序需要进行大量的调整,而难以进行。究其原因,因为代码存在大量的冗余,并且相关的类间耦合度太高,导致修改了一处,就必须对多出进行修改、调试。

2、在一些不会产生变化的情况下,可以使用分支语句,这样,程序可读性也较高。但在一些可能会出现变化的地方,使用分支语句,可能会导致“分支蔓延”。


统计学习方法 李航---第9章 EM算法及其推广

第9章 EM算法及其推广 EM算法是一种迭代算法,用于含有隐变量(hidden variable)的概率模型参数的极大似然估计,或极大后验概率估计。EM算法的每次迭代由两步组成:E步,求期望(e...
  • demon7639
  • demon7639
  • 2016年03月30日 09:54
  • 1815

设计模式之策略(Strategy)模式

Strategy模式是一种行为型设计模式,它将算法一个个封装起来,在某一时刻能够互换地使用其中的一个算法。从概念上看,所有这些算法完成的都是相同的工作,只是实现不同而已。动机在开发中,我们常常会遇到概...
  • lihao21
  • lihao21
  • 2015年08月26日 19:51
  • 2013

浅谈JAVA设计模式之——策略模式(Strategy)

一、概述 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 二、适用性 1.许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为...
  • l1028386804
  • l1028386804
  • 2015年05月09日 14:02
  • 1806

《设计模式解析》 第15章 共性与可变性分析 复习题

《设计模式解析》 第15章 共性与可变性分析 复习题   Review Questions Observations 1: What are two ...
  • zyy5411
  • zyy5411
  • 2012年04月23日 20:17
  • 530

《设计模式解析》第一章 面向对象泛型 复习题

第一章             面向对象泛型 复习题 简答题 1. 叙述功能分解中使用的基本方法? 先定出要实现该功能,所需要的几个主要步骤,再对于每个步骤进行细分,将功能实现分解。   2...
  • zyy5411
  • zyy5411
  • 2012年03月18日 11:02
  • 762

《设计模式解析》 第8章 开拓视野 复习题

《设计模式解析》 第8章 开拓视野 复习题     1、  封装不仅仅意味着数据封装。而是包含了各种封装:数据封装、方法封装(实现封装)、类封装、对象封装。总之要遵循调用者无需关注实...
  • zyy5411
  • zyy5411
  • 2012年03月29日 10:38
  • 427

《设计模式解析》 第12章 专家设计之道 复习题

《设计模式解析》 第12章 专家设计之道 复习题 Review Questions Observations 1: Alexander uses the term al...
  • zyy5411
  • zyy5411
  • 2012年04月18日 14:26
  • 407

Strategy设计模式范例

  • 2014年06月26日 17:16
  • 15KB
  • 下载

《设计模式解析》 第11章 Abstract Factory 模式 复习题

《设计模式解析》 第11章 Abstract Factory 模式 复习题   Review Questions Observations 1: Although u...
  • zyy5411
  • zyy5411
  • 2012年04月17日 17:04
  • 616

《设计模式解析》 第13章 用模式解决CADCAM问题 复习题

《设计模式解析》 第13章 用模式解决CADCAM问题 复习题 Review Questions Observations 1: What are the three ...
  • zyy5411
  • zyy5411
  • 2012年04月18日 16:13
  • 376
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《设计模式解析》 第9章 Strategy模式 复习题
举报原因:
原因补充:

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