关闭

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

449人阅读 评论(0) 收藏 举报

《设计模式解析》 第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、在一些不会产生变化的情况下,可以使用分支语句,这样,程序可读性也较高。但在一些可能会出现变化的地方,使用分支语句,可能会导致“分支蔓延”。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:79163次
    • 积分:1404
    • 等级:
    • 排名:千里之外
    • 原创:62篇
    • 转载:2篇
    • 译文:0篇
    • 评论:9条
    最新评论