Design Patterns
双鱼座小韩
计算机系的帅哥啦
展开
-
设计模式 -- 单例模式 Singleton Pattern
单例模式:Singleton Pattern使用场景:通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。理由:节约资源;当实例存在多个会引起程序逻辑错误;程序意图更清晰不易被误用实际例子:日志输出;GUI中单鼠标;操作系统窗口管理器原创 2013-10-26 16:12:14 · 862 阅读 · 0 评论 -
设计模式 - 建造者模式Builder
建造者模式Builder:将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。应用场景:分步骤构建一个复杂的对象,这个步骤是稳定的算法,复杂对象的各个部分可以有不同变化这时候,创建复杂对象的算法就和对象的组成部分、装配方式独立了。结构图如下:例子程序:这几天天天疯狂玩dota,dota初始化的时候要选择一个地图和一个英雄,就以这个为例子构建do原创 2013-11-11 11:19:47 · 1218 阅读 · 0 评论 -
设计模式 -- 外观模式Facade
外观模式:软件工程中常用的一种软件设计模式。它为子系统中的一组接口提供一个统一的高层接口。这一接口使得子系统更加容易使用。适用于: 客户端为了避免与复杂的子系统产生耦合而导致随着子系统的变化而变化。外观模式就是为了简化客户端与子系统之间的接口。结构如下:子系统:需要利用的各个功能模块Facade:提供统一的简单接口,内部包含对子系统的包装整合Client:调用F原创 2013-11-08 16:55:49 · 795 阅读 · 0 评论 -
设计模式 -- 模板方法模式 TemplateMethod
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。原创 2013-11-04 17:06:42 · 815 阅读 · 0 评论 -
设计模式 -- 原型模式Prototype
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。其实就是通过拷贝复制对象,且与原来对象一样,C++先天就有优势原创 2013-11-01 14:38:12 · 853 阅读 · 0 评论 -
设计模式 -- 代理模式 Proxy
定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。种类:1. 虚拟(Virtual)代理:根据需要创建一个资源消耗较大的对象,使得此对象只在需要时才会被真正创建。优化资源加载的过程,例如浏览器优化资源(图片)下载2. 远程(Remote)代理:为一个位于不同的地址空间的原创 2013-10-30 16:52:09 · 762 阅读 · 0 评论 -
设计模式 -- 策略模式Strategy
策略模式:定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。组成:抽象策略角色Strategy:策略类,定义了所有支持的算法的公共接口具体策略角色ConcreteStrategyA : Strategy :继承自Strategy,封装了具体的算法或行为,可能有很多。环境角色或者上下文角色,持有一个对Str原创 2013-10-29 10:02:38 · 767 阅读 · 0 评论 -
设计模式 -- 工厂方法模式 FactoryMethod
简单工厂模式违反了高内聚的原则,把所有的产品创建都集中在了一个具体工厂里面,为了克服这个缺点,工厂方法模式诞生!工厂方法模式:定义一个创建对象的接口,让子类决定实例化哪个类,延迟实例化到子类。是简单工厂模式的升级版,有效的遵循了开放-封闭原则。简单来说就是:一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能原创 2013-10-28 14:53:31 · 912 阅读 · 0 评论 -
设计模式 -- 装饰模式Decorator
装饰模式: 动态的给一个对象添加额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。特点:1. 装饰对象包含一个真实对象的引用,Decorator有一个Component的引用或者指针2. 装饰对象和真实对象拥有相同的接口,这样客户端对象就可以和真实对象一样和装饰对象交互 使用场景:需要动态的给一个类添加功能,这些功能还可以撤销增加一些由基本功能的排列组原创 2013-10-29 10:49:33 · 756 阅读 · 0 评论 -
设计模式 -- 抽象工厂模式 AbstractFactory
抽象工厂模式:算是三大工厂模式中最难理解的一个了,上次校招笔试考过,但是稀里糊涂写成了简单工厂了T_T首先看一个问题场景:问题场景:系统里有三个组件a、b、c同时使用,但是a的同类a1、a2和a有相通的地方但是互斥,b和c也一样。一个例子就是windows和linux都有图形窗口Text和Button对象,分别是winText、winButton和linuxText、linuxButt原创 2013-10-28 16:30:13 · 946 阅读 · 0 评论 -
设计模式 -- 简单工厂模式 SimpleFactory
引入:类的创建型模式,一个工厂对象决定应该创建哪一种产品类的实例,这样外界就不用直接创建对象而只要消费对象就可以了,也不必知道这些对象是如何创建如何组织的,这样就明确了各自的职责和权利。有利于软件体系结构的优化和重构。角色以及指责:工厂Factory:模式的核心,负责创建各所有实例的内部逻辑,可以被外界调用,创建所需要的产品对象。抽象产品角色Abstract原创 2013-10-28 14:27:04 · 882 阅读 · 0 评论 -
设计模式 -- 观察者模式
观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当这个主题对象状态发生变化时候,会通知所有观察者对象,使得他们能够自动更新自己。使用场景:当一个对象的改变需要同时改变其他对象的时候,而且它不知道具体有多少对象有待改变。耦合的双方依赖于抽象不是具体。现实中的例子:微博订阅,当订阅的主题有新消息发布时候,订阅者都会收到相应的通知;类似还有天气预报等结构图原创 2013-11-12 15:13:31 · 832 阅读 · 0 评论