随笔分类 -  设计模式随笔

记录设计模式,方便个人理解
摘要:一、什么是享元模式享元模式(Flyweight Pattern):以共享的方式高效的支持大量的细粒度对象。通过复用内存中已存在的对象,降低系统创建对象实例的性能消耗。 享元的英文是Flyweight,是一个来自体育方面的专业用语,在拳击、摔跤和举重比赛中特指最轻量的级别。把这个单词移植到软件工程中, 阅读全文
posted @ 2019-04-03 14:54 寄月楼主 阅读(206) 评论(0) 推荐(0) 编辑
摘要:工厂方法模式 抽象工厂模式 原型模式 建造者模式 单例模式 结构型模式: 装饰模式 代理模式 适配器模式 享元模式 外观模式 组合模式 桥接模式 行为型模式: 策略模式 模板方法模式 观察者模式 状态模式 备忘录模式 迭代器模式 命令模式 职责链模式 中介者模式 解释器模式 访问者模式 六大原则: 阅读全文
posted @ 2019-04-03 14:29 寄月楼主 阅读(564) 评论(0) 推荐(0) 编辑
摘要:都是基于个人理解,本文是为了帮助记忆。 相同点:原型模式和拷贝构造函数都是要产生对象的复制品。 不同点:原型模式实现的是一个clone接口,注意是接口,也就是基于多态的clone虚函数。也就是说原型模式能够通过基类指针来复制派生类对象。拷贝构造函数完不成这样的任务。 原型模式的核心是克隆,构造函数只 阅读全文
posted @ 2019-04-03 14:08 寄月楼主 阅读(1339) 评论(0) 推荐(1) 编辑
摘要:外观模式,我的理解就是模块封装。比如要实现A类,需要B\C\D三个类,客户调用A类成员函数,A类调用B\C\D。对应客户看不到bcd,只能看到A,因此成为外观模式。这里理解为关联关系。 阅读全文
posted @ 2019-04-03 13:47 寄月楼主 阅读(236) 评论(0) 推荐(0) 编辑
摘要:在面向对象编程领域中,开闭原则规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。该特性在产品化的环境中是特别有价值的,在这种环境中,改变源代码需要代码审查,单元测试以及诸如此类的用以确保产品使用质量的过 阅读全文
posted @ 2019-04-03 11:23 寄月楼主 阅读(76) 评论(0) 推荐(0) 编辑
摘要:模板模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的接口即可重定义改算法的某些特定步骤。 1、基于继承和多态 2、在基类中完成算法调用过程,用派生类去实现每个需要细化的过程。 优点 (1)具体细节步骤实现定义在子类中,子类定义详细处理 阅读全文
posted @ 2019-04-03 11:22 寄月楼主 阅读(175) 评论(0) 推荐(0) 编辑
摘要:Aggregation(聚合) 聚类发生的场景是:一个类是另一个类的集合或者容器,但被包含的类与容器本身并不具备相同的生命期,也就是容器销毁时,其包含的内容未必。关联(association)与聚合(aggregation)的不同之处在于,关联关系不存在一个明确的容器包含另外一个类。比如汽车和轮胎的 阅读全文
posted @ 2019-04-03 09:40 寄月楼主 阅读(338) 评论(0) 推荐(0) 编辑
摘要:class A、B、C都实现dispatch接口,实现set_next接口;都派生自同一个基类。 A a B b C c a.set_next(b) b.set_next(c) a.dispatch() 这样形成逐级审批调用,在dispatch里实现接力。 当然另一种实现方式是在外部维护一个list 阅读全文
posted @ 2019-04-02 16:57 寄月楼主 阅读(162) 评论(0) 推荐(0) 编辑
摘要:组合模式:是一种树形结构 桥接模式:N个操作系统,M个不同品牌电脑 电脑虚基类:实现install_os(os*) 操作系统虚基类:实现install() linux = new LinuxOS() windows = new WindosOS() pc = new ApplePC() pc->in 阅读全文
posted @ 2019-04-02 16:31 寄月楼主 阅读(925) 评论(0) 推荐(0) 编辑
摘要:1.Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储自己的哪些内部状态。 2.Memento(备忘录):负责存储Originator对象的内部状态,并可以防止Origi 阅读全文
posted @ 2019-04-02 15:59 寄月楼主 阅读(239) 评论(0) 推荐(0) 编辑
摘要:代理模式:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。 适配器模式:将一个类 阅读全文
posted @ 2019-04-02 15:39 寄月楼主 阅读(981) 评论(0) 推荐(0) 编辑
摘要:摘抄:https://www.cnblogs.com/wxmwanggood/p/9288264.html 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当 阅读全文
posted @ 2019-04-02 15:34 寄月楼主 阅读(167) 评论(0) 推荐(0) 编辑
摘要:观察者模式,说白了,就是有数据更新,需要通知到各个模块。 subject:提供注册机制,需要订阅数据的观察者要向subject注册;简单地说,就是将观察者的指针保存到subject的list中。当数据更新时,调用observer.notify Observer: 实现notify接口 阅读全文
posted @ 2019-04-02 15:12 寄月楼主 阅读(127) 评论(0) 推荐(0) 编辑
摘要:建造者模式: 1、建造者接口(虚基类),定义建造过程 2、建造者A、建造者B 3、导演/建造指挥者,定义建造过程,并且可以定义不同的建造过程。 工厂模式:对调用者来讲,不关心对象创建过程,得到的是一个最终的对象。主要强调创建对象。 建造者模式:建造指挥者需要了解建造过程。而建造的不一定是对象,可能是 阅读全文
posted @ 2019-04-02 14:49 寄月楼主 阅读(392) 评论(0) 推荐(0) 编辑
摘要:简单工厂模式:一个工厂,多个产品。产品需要有一个虚基类。通过传入参数,生成具体产品对象,并利用基类指针指向此对象。通过工厂获取此虚基类指针,通过运行时多态,调用子类实现。 工厂方法模式:多个工厂,多个产品,每个产品对应于一个工厂。此时工厂和产品都是通过虚基类的方式构建。对于简单工厂模式,当要增加一个 阅读全文
posted @ 2019-04-02 14:18 寄月楼主 阅读(169) 评论(0) 推荐(0) 编辑
摘要:装饰模式:在不改变接口的前提下,动态扩展对象的功能 当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有的功能,并提供加强功能。那么自定义的该类称为装饰类。一般的,装饰者和背装饰者实现相同的接口,实现增加功能而不增加接口。 当想要对已有的对象进行功能增强时,可以定义类,将已有对象传 阅读全文
posted @ 2019-04-02 14:08 寄月楼主 阅读(134) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示