![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 80
拾贝壳的小顽童
五月开始拾贝壳九月中旬见分晓
展开
-
3.1 抽象工厂
GOF设计模式-抽象工厂原创 2013-07-08 20:44:50 · 718 阅读 · 0 评论 -
4.7 Proxy代理模式
意图:为其他对象提供一种代理以控制对这个对象的访问。 种类和用途Proxy模式根据种类不同,效果也不尽相同:1、远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是在本机器中,也可是在另一台机器中。远程代理又叫做大使(Ambassador)。好处是系统可以将网络的细节隐藏起来,使得客户端不必考虑网络的存在。客户完全可以认为被代理转载 2013-07-24 20:05:23 · 1075 阅读 · 0 评论 -
5.2 Command命令模式
意图:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 类图: Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。 ConcreteCommand类:Command类的实现类,对抽象类中声明的方法进行实现。 Client类:最终的客转载 2013-07-30 23:38:19 · 681 阅读 · 0 评论 -
4.6 FlyWeight 享元模式
意图:运用共享技术邮箱地支持大量细粒度的对象。 享元模式可以避免大量非常相似类的开销。在程序设计中,有时需要生成大量细粒度的类实例来表示数据。如果能发现这些实例除了几个参数外基本上都是相同的,有时就能够受大幅度地减少需要实例化的类的数量。如果能把那些参数移到类实例的外面,在方法调用时将它们传递进来,就可以通过共享大幅度地减少单个实例的数目。在现实中什么时候才会应该考虑使用享元模式呢转载 2013-07-24 10:23:13 · 671 阅读 · 0 评论 -
4.5Fasade 外观模式
意图:外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦?这就是外观模式的作用了,我们通过一个外观类定义一个高层接转载 2013-07-22 10:11:41 · 665 阅读 · 0 评论 -
4.4 Decorator模式
意图:动态的给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 使用继承机制是添加功能的一种有效途径,从其他类继承过来的特性可以被多个子类的实例所使用。但这种方法不够灵活。用户不能选择对组件加特性的方式和时机。一种较灵活的方式是将组件嵌入另一个对象中,由这个对象添加特性。我们称这个嵌入的对象叫装饰。 几个例子帮助理解:QQ的换装系原创 2013-07-20 21:09:58 · 797 阅读 · 0 评论 -
4.3Composite
意图:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。 组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。 生活中的例子组合模式将对象组合成树形结构以表示"部分-整体"的层转载 2013-07-19 20:16:37 · 618 阅读 · 0 评论 -
4.2Bridge桥接模式
意图:将抽象部分与实现部分分离,使它们都可以独立的变化。再通俗点说就是:实现系统可能有多角度的分类,每一种分类可能都有变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。桥接模式结构图:Abstraction定义抽象的接口。该接口包含实现具体行为、具体特征的Implementor接口Refined Abstraction抽象接口Abs原创 2013-07-18 20:23:52 · 1030 阅读 · 0 评论 -
4.1Adapter模式
转自:http://blog.csdn.net/lcl_data/article/details/8780140解决的问题:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。比如说我的hp笔记本,美国产品,人家美国的电压是110V的,而我们中国的电压是220V,要在中国能使用,必须找个变压器转一下电压才可以。这个变压器就是个转载 2013-07-18 09:54:04 · 824 阅读 · 0 评论 -
3.5 Singleton
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。 单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点转载 2013-07-11 19:49:44 · 607 阅读 · 0 评论 -
3.4Prototype
意图:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。这个其实和C++的拷贝构造函数的作用是一致的,实际上就是动态抽取当前对象运行时的状态。 UML图:客户(Client)角色:让一个原型克隆自身从而创建一个新的对象。抽象原型(Prototype)角色:这是一个抽象角色,抽象类实现。此角色声明一个克隆自身的接口。具体原型(Concrete Prot原创 2013-07-10 10:41:53 · 901 阅读 · 0 评论 -
3.3FactoryMethod——工厂方法
意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。 其实在抽象工厂模式中,经过改进后的模式就是工厂方法模式,所以不多说了,上UML图。通过工厂方法模式的类图可以看到,工厂方法模式有四个要素:1.工厂接口。工厂接口是工厂方法模式的核心,与调用者直接交互用来提供产品。在实际编程中,有时候也会使用一个抽象类原创 2013-07-09 19:19:25 · 715 阅读 · 0 评论 -
3.2Builder
意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式的本质和建造楼房是一致的:即流程不变,但每个流程实现的具体细节则是经常变化的。建造者模式的好处就是保证了流程不会变化,流程既不会增加,也不会遗漏或者产生流程次序错误,这是非常重要的。 建造者模式通常包括下面几个角色:1. Builder:给出一个抽象接口,以规范产品对象的各个组成成分转载 2013-07-09 14:45:35 · 619 阅读 · 0 评论 -
5.1 Chain of Responsibility职责链模式
意图:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 举例:辛辛苦苦了工作了一年,终于可以加薪了,向主管提交了加薪申请,主管一看不得了,自己职权不够,批不了,主管把申请上交总监,总监发现自己也批不了,申请到了总经理手中,总经理一看,小伙子口气不小了,有胆识敢申请,先来谈下心。预知后事如转载 2013-07-25 21:59:39 · 815 阅读 · 1 评论