摘要: 介绍: 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。 定义: 用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦 阅读全文
posted @ 2020-08-23 20:26 吉尔加斯 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 定义: 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 是一种递归操作,要注意所有接收者都无法处理请求的情况。 结构图: 代码 //Handler类,定义一个处理请求的接口 class Handler{ 阅读全文
posted @ 2020-08-23 13:18 吉尔加斯 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 定义: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 在软件系统中,【行为请求者】与【行为实现者】通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做等处理时,这种无法抵御变化的紧耦合的设计就不太合适。命令模式就 阅读全文
posted @ 2020-08-23 12:50 吉尔加斯 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 定义: 将抽象部分与它的实现部分分离,使他们都可以独立的变化。 这里的抽象和实现分离是指把实现的多种方式独立出来,让他们各自变化;实现系统可能有多角度分类,每一种分类都有可能变化,把这种多角度分离出来让它们独立变化,减少它们的耦合,这就是桥接模式。 比如手机这个抽象,它的实现既可以按照品牌分类,也可 阅读全文
posted @ 2020-08-16 22:53 吉尔加斯 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 定义: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单体模式分为懒汉模式和饿汉模式: 饿汉模式:在编译加载时就用静态初始化的方式实例化自己,优点是不需要编写线程安全代码,在多线程环境下它是安全的;缺点是提前占用系统资源。 懒汉模式:在第一次被引用时才实例化自己,优点是不必提前占用系统资源 阅读全文
posted @ 2020-08-16 15:17 吉尔加斯 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 定义: 将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。 也称为 整体-部分(Part-Whole)模式,它的宗旨是通过将单个对象(叶子节点)和组合对象(树枝节点)用相同的接口进行表示,使得客户对单个对象和组合对象的使用具有一致性。 其中根节 阅读全文
posted @ 2020-08-16 09:32 吉尔加斯 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 定义: 备忘录模式(Memento Pattern)在一个对象之外保存这个对象的某些状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 结构图: 代码: //Originator类 class Originator { private: String state; public: void 阅读全文
posted @ 2020-08-13 23:39 吉尔加斯 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 定义: 将一个类的接口转换成客户端需要的另外一个接口;adapter模式使得原本由于接口不兼容而不能一起工作的类能一起工作。 简而言之就是中间件,将上游客户端调用的接口和下游服务端提供的接口实施对接。 结构图: 代码: //Target,客户端调用的接口 Class Target { void Re 阅读全文
posted @ 2020-08-11 23:16 吉尔加斯 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 定义: 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。 工厂方法是生产一种产品,抽象工厂是生产一个产品族。 结构图: 代码: 果蔬工厂(分为北方果蔬和热带产果蔬) //两种抽象产品:水果、蔬菜 Class Fruit { } Class Veggie { } //四种具体产品 阅读全文
posted @ 2020-08-09 13:27 吉尔加斯 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 定义: 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听一个通知者对象。这个通知者对象在状态发生变化时,会通知所有观察者对象,使他们能够自己更新自己。 结构图: 代码: //通知者接口类 Class Subject { private: //观察者集合 IList<Observer> 阅读全文
posted @ 2020-08-02 15:23 吉尔加斯 阅读(191) 评论(0) 推荐(0) 编辑