12 2016 档案

摘要:一、命令模式 将一个请求封装为一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 (1)Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。(2)ConcreteCommand类: 阅读全文
posted @ 2016-12-30 14:13 pinhole 阅读(183) 评论(0) 推荐(0)
摘要:一、代理模式 为其他对象提供一种代理以控制对这个对象的访问。 代理模式分为四种: 远程代理:为了一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。 虚拟代理:根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的对象。 安全代理:用来控制真实对象访问时的权限。 阅读全文
posted @ 2016-12-30 11:15 pinhole 阅读(243) 评论(0) 推荐(0)
摘要:一、享元模式 在一个系统中如果有多个相同的对象,这些对象有部分状态是可以共享的,我们运用共享技术就能有效地支持大量细粒度的对象。 二、例子 举个围棋的例子,围棋的棋盘共有361格,即可放361个棋子。现在要实现一个围棋程序,该怎么办呢?首先要考虑的是棋子棋盘的实现,可以定义一个棋子的类,成员变量包括 阅读全文
posted @ 2016-12-30 10:27 pinhole 阅读(225) 评论(0) 推荐(0)
摘要:一、外观模式 外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口,让子系统更容易被使用。 二、UML图 三、例子 举个编译器的例子,假设编译一个程序需要经过四个步骤:词法分析、语法分析、中间代码生成、机器码生成。学过编译都知道,每一步都很复杂。对于编译器这个系统,就 阅读全文
posted @ 2016-12-30 09:50 pinhole 阅读(347) 评论(0) 推荐(0)
摘要:一、装饰模式 动态地给一个对象添加额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。有时我们希望给某个对象而不是整个类添加一些功能。 二、UML图 1.Component(概念中提到的对象接口),也就是“被装饰者”。2.ConcreateComponent(未添加任何职责的,对象接口的子类) 阅读全文
posted @ 2016-12-30 09:41 pinhole 阅读(1076) 评论(0) 推荐(0)
摘要:一、概念 组合模式允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。 二、UML图 1.Component(对象接口),定义了对象可以做的事情。 2.Leaf(叶子结点对象) 3.Composite(其他结点对象,包含其他结点或者叶子节点) 三 阅读全文
posted @ 2016-12-28 15:32 pinhole 阅读(393) 评论(0) 推荐(0)
摘要:一、概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或者多个维度的变化,如何应对这种“多维度的变化”,就可以利用桥接模式。 引例: 设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案: •第一种 阅读全文
posted @ 2016-12-28 15:00 pinhole 阅读(517) 评论(0) 推荐(0)
摘要:一、适配器模式 适配器模式的主要作用是在新接口和老接口之间进行适配。将一个类的接口转换成客户端期望的另外一个接口。其实适配器模式有点无赖之举,在前期设计的时候,我们就不应该考虑适配器模式,而应该通过重构统一接口。 二、适配器模式分为类适配器模式和对象适配器模式 类适配器模式:适配器使用多重继承对一个 阅读全文
posted @ 2016-12-28 13:48 pinhole 阅读(293) 评论(0) 推荐(0)
摘要:一、原型模式 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。原型模式实现的关键就是实现Clone函数,还需要实现深拷贝。 二、UML类图 三、例子 三、原型模式的优点及适用场景 使用原型模式创建对象比直接new一个对象在性能上要好的多,因为Object类的clone方法是一个本地方法 阅读全文
posted @ 2016-12-28 11:01 pinhole 阅读(258) 评论(0) 推荐(0)
摘要:一、首先看建造者模式的UML图: 二、再来看一个建造者模式的例子 int main(){ FatBuilder thin; Director director(&thin); director.Create(); return 0;} 三、建造者模式和工厂模式的联系 联系前面的工厂模式,可以发现建造 阅读全文
posted @ 2016-12-28 10:40 pinhole 阅读(219) 评论(0) 推荐(0)
摘要:单例模式很显然是定义一个类,这个类在程序中只有唯一的实例对象。一般单例类的构造函数是私有的,只能通过调用静态函数GetInstance来获取实例。 一、单例模式有三种:懒汉式单例、饿汉式单例、登记式单例(利用java内部类的概念)。 1.懒汉式单例 优点:第一次调用才初始化,避免内存浪费。 缺点:如 阅读全文
posted @ 2016-12-28 10:10 pinhole 阅读(225) 评论(0) 推荐(0)
摘要:工厂模式属于创建型模式,分为三类,简单工厂模式、工厂方法模式、抽象工厂模式。 一、简单工厂模式 在工厂中做判断,根据产品类型从而创造相应的产品,当增加新产品时需要修改工厂类。 例如: 二、工厂方法模式 简单工厂模式的缺点是增加新的产品类型时,需要修改工厂类,违反了开闭原则。工厂方法模式,是指定义一个 阅读全文
posted @ 2016-12-28 09:11 pinhole 阅读(217) 评论(0) 推荐(0)
摘要:1.单一职责原则 类的职责要单一,不能将太多的职能放在一个类中。 2.开闭原则 软件实体对扩展是开放的,但对修改是关闭的,即在不修改一个软件的基础上去扩展其功能。实现开闭原则的关键是抽象化,找到系统的可变因素,将它封装起来。 3.里氏替换原则 一个可以接受基类对象的地方必然可以接受一个子类对象。在程 阅读全文
posted @ 2016-12-28 08:43 pinhole 阅读(534) 评论(0) 推荐(0)