摘要: 一、概念 组合模式允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。 二、UML图 1.Component(对象接口),定义了对象可以做的事情。 2.Leaf(叶子结点对象) 3.Composite(其他结点对象,包含其他结点或者叶子节点) 三 阅读全文
posted @ 2016-12-28 15:32 pinhole 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 一、概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或者多个维度的变化,如何应对这种“多维度的变化”,就可以利用桥接模式。 引例: 设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案: •第一种 阅读全文
posted @ 2016-12-28 15:00 pinhole 阅读(498) 评论(0) 推荐(0) 编辑
摘要: 一、适配器模式 适配器模式的主要作用是在新接口和老接口之间进行适配。将一个类的接口转换成客户端期望的另外一个接口。其实适配器模式有点无赖之举,在前期设计的时候,我们就不应该考虑适配器模式,而应该通过重构统一接口。 二、适配器模式分为类适配器模式和对象适配器模式 类适配器模式:适配器使用多重继承对一个 阅读全文
posted @ 2016-12-28 13:48 pinhole 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 一、原型模式 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。原型模式实现的关键就是实现Clone函数,还需要实现深拷贝。 二、UML类图 三、例子 三、原型模式的优点及适用场景 使用原型模式创建对象比直接new一个对象在性能上要好的多,因为Object类的clone方法是一个本地方法 阅读全文
posted @ 2016-12-28 11:01 pinhole 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 一、首先看建造者模式的UML图: 二、再来看一个建造者模式的例子 int main(){ FatBuilder thin; Director director(&thin); director.Create(); return 0;} 三、建造者模式和工厂模式的联系 联系前面的工厂模式,可以发现建造 阅读全文
posted @ 2016-12-28 10:40 pinhole 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 单例模式很显然是定义一个类,这个类在程序中只有唯一的实例对象。一般单例类的构造函数是私有的,只能通过调用静态函数GetInstance来获取实例。 一、单例模式有三种:懒汉式单例、饿汉式单例、登记式单例(利用java内部类的概念)。 1.懒汉式单例 优点:第一次调用才初始化,避免内存浪费。 缺点:如 阅读全文
posted @ 2016-12-28 10:10 pinhole 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 工厂模式属于创建型模式,分为三类,简单工厂模式、工厂方法模式、抽象工厂模式。 一、简单工厂模式 在工厂中做判断,根据产品类型从而创造相应的产品,当增加新产品时需要修改工厂类。 例如: 二、工厂方法模式 简单工厂模式的缺点是增加新的产品类型时,需要修改工厂类,违反了开闭原则。工厂方法模式,是指定义一个 阅读全文
posted @ 2016-12-28 09:11 pinhole 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 1.单一职责原则 类的职责要单一,不能将太多的职能放在一个类中。 2.开闭原则 软件实体对扩展是开放的,但对修改是关闭的,即在不修改一个软件的基础上去扩展其功能。实现开闭原则的关键是抽象化,找到系统的可变因素,将它封装起来。 3.里氏替换原则 一个可以接受基类对象的地方必然可以接受一个子类对象。在程 阅读全文
posted @ 2016-12-28 08:43 pinhole 阅读(531) 评论(0) 推荐(0) 编辑