设计模式
心文花雨
这个作者很懒,什么都没留下…
展开
-
Bridge
一、前言 由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,乃至多个纬度的变化。桥接模式将抽象部分(业务功能)与实现部分(平台实现)分离,使它们都可以独立地变化,而不引入额外的复杂度。桥接模式类似于策略模式,区别在于策略模式封装一系列算法使得算法可以互相替换。策略模式使抽象部分和实现部分分离,可以独立变化。 二、类图 三、示例 1. 没有使用模式 package bridg...原创 2020-02-21 14:41:26 · 136 阅读 · 0 评论 -
Decorator
一、前言 在某些情况下我们可能会“过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀;如何使“对象功能的扩展”能够根据需要来动态地实现?同时避免“扩展功能的增多”带来的子类膨胀问题?从而使得任何“功能扩展变化”所导致的影响将为最低? Decorator模式动态(组...原创 2020-02-20 16:00:39 · 173 阅读 · 0 评论 -
Observer
一、前言 在软件构建过程中,我们需要为某些对象建立一种通知依赖关系,一个对象的状态发生改变,所有依赖对象都将得到通知,如果这样的依赖党关系过于紧密,将使软件不能很好的抵御变化,可以将这种依赖关系弱化,形成一种稳定的依赖关系,从而实现软件体系结构的松耦合。 observer 模式定义对象间的一种一对多(变化)的依赖关系,以便当一个对象的状态发生改变时,所有依赖它的对象都得到通知并自动更新。 二...原创 2020-02-19 18:12:14 · 224 阅读 · 0 评论 -
Strategy
一、定义 构建中,某些对象的算法可能经常改变,如果将这些算法都编码到对象之中,将会使得对象变的异常复杂,而且有时候支持不使用的算法也是一个性能负担,Strategy模式定义一系列算法,把它们一个个封装起来,让这些算法在运行时可以互换,分离算法,将算法与本身解耦,使得算法可以独立于使用它的客户程序(稳定)而变化(扩展,子类化),符合开闭原则,从而解决上述问题。 二、类图 三、示例 1. ...原创 2020-02-18 17:55:58 · 173 阅读 · 0 评论 -
templatemethod
一、定义 定义一个操作中算法的骨架(稳定),将一些特定的步骤延迟到子类中,templatemethod使得子类可以不改变(复用)一个算法的结构即可重定义(匿名组)该算法的某些特定步骤。 二、类图 三、示例 Library开发人员 (1) 开发1,3,5三个步骤 (2) 程序主流程 Application开发人员 (1) 开发2,4三个步骤 1. 没有使用模式 packag...原创 2020-02-17 16:12:18 · 115 阅读 · 0 评论 -
设计模式设计原则
一、依赖倒置原则(DIP) 高层模块(稳定)不应该依赖于低层模块(变化),二者都应该依赖于抽象(稳定) 抽象(稳定)不应该依赖于细节(变化),实现细节应该依赖于抽象(稳定) 二、开放封闭原则(OCP) 对扩展开放,对更改封闭 类模块应该是可扩展的,但是不可修改 三、单一职责原则(SRP) 一个类应该仅有一个引起它变化的原因 变化的方向隐含着类的责任 四、Liskov 替换原则(L...原创 2019-09-14 15:50:36 · 164 阅读 · 0 评论