前面简单的学习了策略模式、观察者模式、装饰者模式,三种模式主要用于处理类之间的关系,三种模式循序渐进,后面的模式可以说是对前一模式的完善
策略 模式:一对一的类关系,模式中存在一个核心和多个算法,但是核心只能从这多个算法中选择一个进行使用,也算是一个缺点,从而引入观察者模式
观察者模式:一对多的类关系,模式中存在一个主题和多个观察者,此时主题可以持有多个观察个,并使用其方法。但也可以发现,观察者的复用性较低,基本上绑定了主题。
装饰者模式:多对多的关系,模式中可以存在多个装饰者和多个组件,同时组件也可能是一个装饰者,一个装饰者可以装饰多个组件,一个组件也可以拥有多个装饰者。
每种模式都有其局限性,即适用于处理一定范围内的问题,没有通用的模式,只有解决问题的模式。
简单整理一下三种模式适用的【问题域】
策略模式:
观察者模式1.多个类只表现为行为不同,其他结构体基本相同,如工资结算,类结构区别多在计算方法中不同。
2.需要在不同情况下使用不同算法,或者在可预期内,算法实现方式会发生变化。
3.隐藏具体实现细节(将核心技术保留在自己手中)。
1.抽象个体有两个相互依赖的层面,封装这些对象,使之可以随意修改同时不会影响依赖关系之间的交互
2.一个对象的变化会影响其他对象,但是又不知道被影响对象的数量
3.对象有能力通知其他对象,但又不知道具体实现细节
装饰者模式
1.需要扩展一个类的功能,或者给一个类附加一个职责
2.动态的扩展类的功能
3.需要实现大量由基本功能排列组合而成的功能
4.不能使用继承的方式进行扩充时,一种情况是,可能有大量的独立扩展,使得子类数目过多;另一种情况,类定义被隐藏或不能用于生产子类
原文地址:http://blog.csdn.net/sunshoupo211/article/details/40744053