面向对象的开发范式
面向对象的最大好处就是封装,让我们回顾一下这些设计模式都封装了哪些方面。
创建型模式封装了实例化的过程,客户对象不再关心这些创建的细节:
应该使用哪个具体类,如何初始化和组装实例。
创建型模式 这样,也为实例化提供了很大的灵活性:
可以使用克隆的方式加快其创建过程和简化创建细节,也可以根据配置确定
实例化的具体类型,还可以根据需要创建单例对象。
封装了那些不变的算法步骤,把变化那些分交给子类
模板方法模式 去封装,对使用者隐藏了具体的子类型。
装饰器模式隐藏了被装饰对象;
并且,由于装饰对象和被装饰的对象具有相同的接口,
装饰器模式 客户对象在使用被装饰过的对象和未装饰过的对象时,
不需要对它们区别对待,隐藏了装饰器类型。
和装饰器模式一样,隐藏了被代理对象(目标对象),
代理模式 也实现了代理类型的隐藏。
隐藏了被适配的接口/类,客户对象并不知道请求会
适配器模式 转发给被适配的对象。
外观模式 隐藏了子系统,封装了外观和子系统之间的复杂交互。
实现了叶子类和分支子类的隐藏,客户对象操作叶子对象
组合模式 和分支对象时不需要区别对待。
策略模式 每一个具体策略都封装了一个具体的实现算法。
状态模式 每一个状态都封装了与一个特定状态相关的行为,
Context隐藏了状态接口和实现,
客户对象不知道它们的存在。
不同的观察者对变化的处理是不同的,
把这些变化封装在不同类型的观察者类型里,
观察者模式 由于它们有相同的接口,观察者就能独立于主题而变化。
另外如果为主题也抽象了接口,
这样观察者和主题两方面就能独立变化与重用,而不会影响对方。