设计模式
文章平均质量分 84
yangzhengqui
这个作者很懒,什么都没留下…
展开
-
设计模式学习--抽象工厂模式
抽象工厂模式是对象创建形模式的一种。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。总的来说就是当发现需要创建一系列的对象,而此时发现耦合又高,为了以后的可扩展性,可以使用该模式。该模式的UML图如下: 意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们的具体类 适用原创 2015-06-16 00:24:46 · 462 阅读 · 0 评论 -
设计模式--观察者模式
观察者模式又称发布–订阅模式,是属于对象行为性的一种设计模式。 首先是观察者模式的定义: 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个对象,当这个主题对象发生改变的时候,会通知所有的观察者对象,使他们能自动更新自己。 此模式的结构图: 适用性: 1 当一个抽象模型有两个方面,其中一个方面依赖于另外一个方面,将这两个对象封装在独立的对象中以使他们独立的发生改变和原创 2015-08-25 00:17:09 · 313 阅读 · 0 评论 -
设计模式--享元模式
享元(FlyWeight)属于结构模式分类的一种设计模式。它的定义是: 运用共享技术有效的支持大量细粒度的对象。 享元模式的结构图如下: 适用性 1 一个应用程序使用了大量的对象 2 完全由于使用了大量的对象,造成很大的存储开销 3 对象的大多数状态都可变为外部状态 4 如果删除对象的外部状态,那么可以用相对较小的共享对象取代很多组对象 5 应用程序不依赖于对象标识,由于Fly原创 2015-07-18 00:23:20 · 378 阅读 · 0 评论 -
设计模式--代理模式
代理模式的属于结构型模式的一种设计方法。他的定义是: 为其他对象提供一种代理以控制对这个对象的访问。 代理模式的结构图: 适用性 1 远程代理 2 虚代理,根据需要创建开销很大的对象 3 保护代理,控制对原始对象的访问 4 智能指引,取代了简单的指针 协作 代理根据其种类,在适当的时候向RealSubject转发请求 效果 1 远程代理,可以隐藏一个对象存在于不同地址空间原创 2015-07-19 18:04:06 · 358 阅读 · 0 评论 -
设计模式--职责链模式
结构型模式已经学习完了。接下来学习的是对象行为模式的第一种模式,职责链模式。首先行为模式涉及到了算法和对象间职责的分配。行为模式不仅描述对象或类的模式,还描述它们之间的通信模式。行为对象模式使用对象复合而不是继承。 职责链模式(chain of responsiblity),定义是: 使多个对象都有机会都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链。并沿着这条原创 2015-07-19 23:09:58 · 304 阅读 · 0 评论 -
设计模式--状态模式
状态模式的分类是属于对象行为型.首先是状态模式的定义: 当一个对象的内在状态发生改变时允许改变其行为,这个对象看起来是改变了其类. 状态模式的结构图: 适用性: 1 一个对象的行为取决与他的状态,并且在运行时刻可以根据状态改变他的行为 2 当一个操作中含有大量的判断分支语句,造成维护成本高的时候,此时可以把每一个判断分支放入独立的类中,使得每个判断分支都可以独立的发生变化,而不需要依原创 2015-08-30 22:48:42 · 344 阅读 · 0 评论 -
设计模式--迭代器模式
迭代器模式是属于对象行为性的模式。首先是定义: 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露对象的表示方法。 迭代器的结构图: 适用性 1 访问一个聚合对象的内容而无需暴露它的内部表示 2 支持聚合对象的多种遍历 3 为遍历不同的聚合结构提供一个统一的接口(支持多态迭代) 协作 ConcreteIterator跟踪聚合中的当前对象,并能够计算出待遍历的后继对象 优点原创 2015-08-04 00:30:04 · 446 阅读 · 0 评论 -
设计模式--备忘录模式
今晚学习的是属于行为型模式的的备忘录模式。首先,老规矩先是模式的定义: 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 备忘录模式的结构图如下: Originator(原发器),Memento(备忘录),Caretaker(管理者) 适用性: 1 必须保存一个对象在某一时刻的(部分)状态,这样以后需要它才能恢复到原创 2015-08-16 14:08:18 · 464 阅读 · 0 评论 -
设计模式学习--中介者模式
中介者模式是属于对象行为模式的一种设计模式。它的定义是: 用一个中介对象来封装一系列的的对象交互,中介者模式使得各个对象不需要显示的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。 中介者模式的结构图如下: 适用性 1 一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱并且难以理解 2 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象原创 2015-08-06 00:06:11 · 436 阅读 · 0 评论 -
设计模式--外观模式
外观模式是属于结构型模式分类的一种。它的定义是: 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层的接口。这个接口使得这一子系统更加容易的使用。 外观模式的结构图如下: 适用性 1 当你要为一个复杂子系统提供一个简单的接口时。子系统往往因为不能不断变化而变得越来越复杂。大多数模式使用时都会产生更多更小的子类。这使得子系统更具备复用性,也更容易定制。 2 客户程序与抽象类实原创 2015-07-15 00:23:45 · 260 阅读 · 0 评论 -
设计模式学习--单例模式
单例模式,顾名思义就是在整个软件架构中或者说在整个应用中只存在该对象的一个实例。举个例子,比如在开源游戏引擎cocos里面有一个叫做Director的导演类,因为在整个游戏中只存在一个导演类,故该类就可以采用单例模式来实现。 先看一下单例模式的定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常情况下我们可以让一个全局变量使得一个对象被访问,但它不能防止原创 2015-07-07 00:04:12 · 308 阅读 · 0 评论 -
设计模式学习--建造者模式
建造者模式属于对象创建型模式,也可叫做是生成器模式,建造者模式的结构如下图: 如图可以看出,建造者模式主要有生成器(Director),抽象建造者(Builder),具体建造者(ConcreteBuilderA,ConcreteBuilderB),产品类(ProductA,ProductB)组成。各个参与者主要的作用: 生成器:构造一个使用Builder接口的对象 抽象建造者:为创建一个P原创 2015-06-26 00:04:42 · 402 阅读 · 0 评论 -
设计模式学习--工厂方法模式
工厂方法模式是属于对象创建型,定义是原创 2015-06-29 00:13:03 · 297 阅读 · 0 评论 -
设计模式学习--适配器模式
创建型模式学习完了,接下来学习的是结构性模式。结构型模式主要涉及到如何组合类和对象以获得更大的结构,通常采用继承机制来组合接口和实现。 首先学习的是适配器模式。首先是适配器的定义: 适配器模式,将一个类的接口转换成客户所希望的另外一个接口。适配器模式使得原来由于接口不兼容而不能一起工作的类可以一起工作。 简单的说当系统的数据和行为都正确时,但接口不符时,我们应该考虑使用适配器模式。目的是是控原创 2015-07-08 00:33:31 · 391 阅读 · 0 评论 -
设计模式学习--桥接模式
首先,桥接模式是对象结构型模式的一种。桥接模式的定义: 将抽象与实现部分分离,使它们可以独立的发生变化。要说明的一点是,让抽象与实现分离,并不是说让抽象类与其派生类分离,因为这没有任何的意义。实现指的是抽象类和他的派生类用来实现自己的对象。更简单的理解就是实现系统可能有多种分类,每一种分类都有可能发生变化,那么就把这种多角度分离出来让他们独立的发生变化,减少他们之间的耦合。 桥接模式的结构图如下原创 2015-07-09 23:11:32 · 477 阅读 · 0 评论 -
设计模式--命令模式
命令模式是属于对象行为型模式的一种。它的定义是: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,已经可撤销的操作。 命令模式的结构如下: 适用性 1 需要用到回调函数的时候,Command是回调函数的一个面向对象的替代品 2 在不同的时刻指定,排列和执行该请求 3 支持取消操作 4 支持修改日志 5 用构建在原语操作上的高层操作构造原创 2015-07-26 00:01:14 · 362 阅读 · 0 评论 -
设计模式--装饰模式
装饰模式是属于结构型的设计模式。装饰模式的定义: 动态给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。 装饰模式的结构图如下: 适用性: 1 在不影响其他对象的情况下,以动态,透明的方式给单个对象添加职责 2 处理那些可以撤销的职责 3 当不能采用生成子类的方式进行扩充时。一种情况是,可能有大量的对立的扩展,为支持每一种组合将产生大量的子类,使得子类爆炸性的原创 2015-07-12 23:25:14 · 324 阅读 · 0 评论 -
设计模式---组合模式
组合模式是属于结构模式的一种设计方法。首先是定义: 将对象组合成树形结构以表示部分–整体的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 结构图: 意图 将对象组合成树形结构以表示“部分–整体”的层次结构。Composite使得用户对单个对象和组合对象使用具有一致性。 适用性 1 你想表示对象的部分–整体层次结构 2 你希望用户忽略组合对象和单个对原创 2015-07-10 22:57:03 · 384 阅读 · 0 评论 -
设计模式学习--原型模式
原型模式是属于对象创建型,通过克隆的方式从一个对象在创建另外一个可定制的对象,而且不需要知道任何创建的细节,原型模式常与工厂模式混合使用 定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 结构 适用性 1 当一个系统应该独立于它的产品的创建,构成和表示时 2 当要实例化的类是在运行时指定时,比如:通过动态装载 3 为了避免创建一个与产品类层次平行的工厂类层次时原创 2015-06-30 00:01:08 · 421 阅读 · 0 评论 -
设计模式学习--策略模式
学习新的设计模式–策略模式。 策略模式的定义:定义了算法家族,分别封装起来,让他们可以互相的进行替换,此模式可以让算法发生变化,不会影响到使用算法的客户。 策略模式的结构图: 适用性: 1 许多相关的类仅仅是行为有异 2 需要使用一个算法的不同变体 3 算法使用用户不应该知道的数据结构 4 一个类定义了多种行为 协作: ·1 Strategy和Context相互作用实现特定的算原创 2015-10-07 20:53:07 · 321 阅读 · 0 评论