设计模式:抽象工厂模式
为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类当每个抽象产品都有多于一个的具体子类的时候,工厂角色怎么知道实例化哪一个子类呢?比如每个抽象产[1]品角色都有两个具体产品。抽象工厂模式提供两个具体工厂角色,分别对应于这两个具体产品角色,每一个具体工厂角色只负责某一个产品角色的实例化...
设计模式:工厂模式
工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。工厂方法...
设计模式:简单工厂模式
从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。实现方式简单工...
设计模式:解释器模式
定义:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。类型:行为类模式类图: 解释器模式是一个比较少用的模式,本人之前也没有用过这个模式。下面我们就来一起看一下解释器模式。 解释器模式...
设计模式:享元模式
一、引子让我们先来复习下java中String类型的特性:String类型的对象一旦被创造就不可改变;当两个String对象所包含的内容相同的时候,JVM只创建一个String对象对应这两个不同的对象引用。让我们来证实下着两个特性吧(如果你已经了解,请跳过直接阅读第二部分)。先来验证下第二个特性:public class TestPa...
设计模式:外观模式
动机(Motivate): 在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦?意图(Intent): 为子系统中的一组...
设计模式:装饰模式
一、装饰模式简介(Brief Introduction)动态地给一个对象添加一些额外的职责。优点:把类中的装饰功能从类中搬移出去,这样可以简化原有的类。有效地把类的核心功能和装饰功能区分开了。 二、解决的问题(What To Solve)已经开发完毕的对象,后期由于业务需要,对旧的对象...
设计模式:组合模式
组合模式:将对象组合成树型结构以表示‘部分-整体’的层次结构。组合模式使用户对单个对象和组合对象的使用具有一致性。需求中体现部分和整体层次的结构时,已经你希望用户可以忽略组合对象与单个对象的不同,统一使用组合结构中的所有对象时,就应该考虑使用组合模式点击(此处)折叠或打开...
设计模式:桥接模式
将抽象部分和它的实现部分分离,使她们都可以独立地变化点击(此处)折叠或打开class Implementor{public: virtual void Operation()=0;};class ConcreteImplementorA:public Implementor...
适配器模式
系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器主要分为类适配器和对象适配器这里主要讲对象适配器点击(此处)折叠或打开class Target{public: virtual void Reque...
设计模式:访问者模式
参考《大话模式》访问者模式:表示一个作用于某对象结构中各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。它把数据结构和用作于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由演化访问者模式的优点就是增加新的操作很容易,因为增加新的操作就意味着增加一个新的访问者,访...
设计模式中的几大原则总结
单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。软件设计真正要做的许多内容,就是发现职责并把这些职责相互分离。...