设计模式(十三)—— 中介模式 发表于 2019-10-30 | 分类于 技术文章 中介模式定义定义一个对象来封装一系列对象的交互,中介者模式使各个对象之间不需要相互引用,从而使得其松耦合,而且用户可以独立地改变他们之间的交互。 中介模式通用类图: Mediator抽象中介者角色:抽象中介者角色定义一个接口用于与各同事(Colleague)对象通信。 Concrete Medi ... 阅读全文 »
设计模式(二十)—— 状态模式 发表于 2019-10-30 | 分类于 技术文章 状态模式定义对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,当一个对象内在改变时允许其改变行为,这个对象看起来像改变了其类。 State:抽象状态角色,接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换。 ConcreteState:具体状态角色,职责是本状态的行为管理以 ... 阅读全文 »
设计模式(十六)—— 观察者模式 发表于 2019-10-30 | 分类于 技术文章 观察者模式定义定义对象间的一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖与他的对象都会得到通知并被自动更新。 Subject:被观察者,定义被观察者必须实现的职责,必须能过动态的增加、取消观察者,一般是抽象类或者实现类,管理观察者并通知观察者。 Observer:观察者,观察者接收到 ... 阅读全文 »
设计模式(十五)—— 迭代器模式 发表于 2019-10-30 | 分类于 技术文章 迭代器模式定义提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。 Iterator:抽象迭代器,负责定义访问和遍历元素的接口,基本上是固有的三个方法:first()获得第一个元素,next()访问下一个元素,hasNext()是否已经访问到底部。 ConcreteIterato ... 阅读全文 »
设计模式(十四)—— 适配器模式 发表于 2019-10-30 | 分类于 技术文章 适配器模式定义讲一个类的接口变换成客户端所期待的另一种接口,从而是原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 Target:目标角色,该角色定义把其他类转换为何种接口,也就是我们所期望的接口。 Adaptee:源角色,将要转换成目标角色的角色,是已经存在的、运行良好的类或对象,经过 ... 阅读全文 »
设计模式(十八)—— 备忘录模式 发表于 2019-10-30 | 分类于 技术文章 备忘录模式定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先的状态。 Originator:发起人角色,记录当前时刻的内部状态,负责那些属于备份范围的状态,负责创建和恢复备忘录数据。 Memento:备忘录角色,负责存储Origina ... 阅读全文 »
设计模式(十九)—— 访问者模式 发表于 2019-10-30 | 分类于 技术文章 访问者模式定义封装一些作用于某种数据结构中的各种元素的操作,可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 Visitor:抽象访问者,抽象类或者接口,声明访问者可以访问那些元素,具体到程序中就是visit方法的参数定义那些对象是可以被访问的。 ConcreteVisitor:具体访 ... 阅读全文 »
设计模式(十)—— 命令模式 发表于 2019-10-30 | 分类于 技术文章 命令模式定义:讲一个请求封装成一个对象,使发出请求的责任和执行请求的责任分隔开。两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。 通用类图: 从类图中可以看到有三个角色: Command命令角色:需要执行的所有命令都在这里声明。 Receiver接收者角色:执行 ... 阅读全文 »
设计模式(十二)—— 责任链模式 发表于 2019-10-30 | 分类于 技术文章 责任链模式定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者间的耦合关系,将这些对象连城一条链,并沿着这条链传递该请求,直到有对象处理它为止。 Handler:抽象处理者,定义一个处理请求的接口,包含抽象处理方法和一个后继连接。 Concrete Handler:具体处理者,实现抽 ... 阅读全文 »
设计模式(十七)—— 门面模式 发表于 2019-10-30 | 分类于 技术文章 门面模式定义要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个更高层次的接口,使得子系统更易于使用。门面模式也叫做外观模式。 门面模式通用类图: Facade:门面角色,暴露给客户端的方法,此角色知晓所有子系统的所有功能和责任,将客户端的请求下发到对应的子系统去,没有 ... 阅读全文 »