简单聊下单例模式

单例模式 单例模式一般用于全局只需要一个唯一的实例的情况。 例如说,日志读写的功能,一般来说全局只需一个日志读写实例,然后其他的类实例去获取这个实例进行日志读写。 又例如说,有一个协作的功能,需要各个模块发送给主控制器,主控制器需要做成...阅读全文

【OOP】模板与STL初步

命名空间 问题背景 设想,在一次的大规模程序中,你和几位搭档合作写代码。 由于所需的代码量无比庞大,你们遇到了一个无法避免的问题——标识符命名高度重合,造成了代码极度混乱。 如果要重新修改标识符的名称,不仅耗时耗力,还会导致代码的可读性...阅读全文

行为型:十一. 解释器模式

解释器模式是什么 解释器是一种行为型设计模式,指给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上...阅读全文

行为型:十. 访问者模式

访问者模式是什么 访问者是一种行为型设计模式, 允许你在不修改已有代码的情况下向已有类层次结构中增加新的行为。 为什么用访问者模式 访问者模式建议将新行为放入一个名为访问者的独立类中,而不是试图将其整合到已有类中。现在需要执行操作的原始...阅读全文

行为型:九. 状态模式

状态模式是什么 状态模式是一种行为设计模式,让你能在一个对象的内部状态变化时改变其行为,使其看上去就像改变了自身所属的类一样。 为什么要用状态模式 如果对象需要根据自身当前状态进行不同行为,同时状态的数量非常多且与状态相关的代码会频繁变...阅读全文

行为型:八. 中介者模式

中介模式是什么 中介者模式是一种行为设计模式,用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以相互独立地改变它们之间地交互。 为什么用中介模式 中介者模式建议你停止组件之间的直接交流并...阅读全文

PHP设计模式—享元模式

定义: 享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象。 结构: Flyweight:享元抽象类,所有具体享元类的接口,通过这个接口,Flyweight 可以接受并作用于外部状态。 ConcreteFlyweig...阅读全文

行为型:七. 备忘录模式

备忘录模式是什么 备忘录模式是一种行为设计模式, 允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。 为什么要用备忘录模式 当你需要创建对象状态快照来恢复其之前的状态时,可以使用备忘录模式。或者当直接访问对象的成员变量、获取器或...阅读全文

设计模式篇(6) 装饰器

###装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 这种模式创建了一个装饰类,用来包装原有的类,并在保持...阅读全文

常用设计模式

外观(门面)模式 化零为整,把零碎的功能拼成一个整体,对外提供一个统一接口,用来访问子系统中的多个接口。 总结 解耦,不需要一个个对接,使用简单。 单例模式 负责创建对象,同时确保只有单个对象被创建。 饿汉式 线程安全,在类加载时就会进...阅读全文

设计原则之SOLID 原则

介绍 SOLID 原则是由 5 个设计原则组成的,分别为:(S)单一职责原则、(O)开闭原则、(L)里式替换原则、(I)接口隔离原则和(D)依赖反转原则; 单一职责原则 SRP 单一职责原则的英文是 Single Respon...阅读全文

行为型:六. 迭代器模式

迭代器模式是什么 迭代器模式是一种行为设计模式, 让你能在不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素。 为什么用迭代器模式 当集合背后为复杂的数据结构, 且你希望对客户端隐藏其复杂性时(出于使用便利性或安...阅读全文

戏说领域驱动设计(廿三)——工厂

在讲解实体的章节中我们曾经介绍说过如何有效的创建实体,主要包括两种方式:工厂和构造函数。本章我们工厂进行一下详解,这种东西能有效的简化实体使用的难度,毕竟你无法通过Spring这种容器来管理领域对象。实际的开发过程中,工厂的使用要比书中...阅读全文

行为型:五. 策略模式

策略模式是什么 策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。 为什么用策略模式 当你想使用对象中各种不同的算法变体,并希望能在运行时切换算法时,可使用策略模式。策...阅读全文