摘要:
1、意图装饰模式:动态的给一个对象添加一些额外的职责(不重要的功能,只是偶然一次要执行)。就增加功能来说,Decorator模式比使用继承生成子类更为灵活。 建造过程不稳定,需要把所需的功能按正确的顺序串联起来进行控制。2、优缺点分析GOOD:当你向旧的类中添加新代码时,一般是为了添加核心职责或主要行为。而当需要加入的仅仅是一些特定情况下才会执行的特定的功能时(简单点就是不是核心应用的功能),就会增加类的复杂度。 装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象, 当需要执行时,客户端就可以有选择地、按顺序地使用装饰功能包装对象。3、UML标准图1)Compone 阅读全文
摘要:
一、意图 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换,本模式使得算法可独立于使用它的客户而变化——四人团二、基本思想 定义算法家族,分别封装起来,让它们之间可以互相替换,让算法的变化,不会影响到使用算法的用户。 三、优缺点分析GOOD: (1)策略模式是一种定义一系列算法的方法,从概念上看,所有这些算法完成的都是相同的工作,只是实现不同。 所以使用策略模式,就可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。 (2)策略模式的Strategy类层次为Context定义了一系列的可供重用的算法或行为。继承有助于析取出这些算法中的公共功能 (3)简化了单元测 阅读全文
摘要:
1、意图定义对象间的一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生改变时,会通知所有观察者对象,使它们能够自动更新自己。2、核心思想 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更新自己。使用动机: 将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便。本模式适用情况:(1)当一个对象的改变需要同时改变其他对象的时候,而且它不知道具体有多少对象 阅读全文
摘要:
1、当涉及到“维护”时,为了“复用”目的而使用继承,并不是最好的方法。 2、利用继承来提供对象的行为,会导致以下缺点: 1)代码在多个子类中重复; 2)运行时的行为不容易改变; 3)很难知道所有子类的全部行为; 4)改变父类会牵一发而动全身,造成其他子类不想要的改变; 3、使用接口(JAVA)或虚基类加多重继承(C++)方法,则会需要对需要维护的代码中的每个子类都分别考虑其特有方法的继承来源。 4... 阅读全文