转自:http://www.cnblogs.com/houleixx/archive/2008/02/23/1078877.html 记得看原始链接的评论. 学习设计模式也有一段时间了,今天就把我整理的一篇课程和大家分享,有不妥之处欢迎指出. 生活中的一个例子:    就拿汽车在路上行驶的来说.即有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶.这你会发现,对于交通工具(汽车)有不同的类型,然而它们所行驶的环境(路)也在变化,在软件系统中就要适应两个方面的变化?怎样实…
GoF定义: "将抽象与实现分离,使二者可以独立的变化" 游戏中,经常有这么一种情况 基类角色类(ICharacter),下面有子类士兵类(ISoldier).敌军类(IEnemy) 基类武器类(IWeapon),下面有子类枪类(IGun).炮类(ICannon) 当然,有用枪的士兵,有用炮的士兵 这么一组合,就是2*2 = 4个类 游戏后期,当角色类添加一个角色类时,变成了2*3 = 6个类 若再添加一个武器类,3*3 = 9个类 类成倍数增长 维护起来也就越来越困难 这种两个类群组…
一.概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或者多个维度的变化,如何应对这种"多维度的变化",就可以利用桥接模式. 引例: 设想如果要绘制矩形.圆形.椭圆.正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色.绿色.蓝色等,此时至少有如下两种设计方案: •第一种设计方案是为每一种形状都提供一套各种颜色的版本. •第二种设计方案是根据实际需要对形状和颜色进行组合. 对于有两个变化维度(即两个变化的原因)的系统,采用方案二来进行设计系统中类的个数更少,…
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------主要内容包括: 初始桥接模式,包括: 定义.结构和说明.参考实现 体会桥接模式,包括: 场景问题.不用模式的解决方案.使用模式的解决方案 理解桥接模式,包括: 认识桥接模式.谁来桥接.典型例子-JDBC.广义桥接-Java中无处不在桥接.桥接模式的优缺点 思考桥接模式,包括: 桥接模式的本质.对设计原则的体现.何时选用 参考内…
1. 桥接模式: 将抽象部分与它的实现部分分离,使它们都可以独立的变化. 分离是指 抽象类和它的派生类用来实现自己的对象分离. 实现系统可以有多角度分类,每一种分类都有可能变化,那么把这种多角度分离出来让他们独立变化,减少他们之间的耦合. 实例: implementor.h implementor.cpp  实现接口 #ifndef IMPLEMENTOR_H #define IMPLEMENTOR_H class Implementor { public: Implementor(); voi…
一.模式解析: 策略模式一节讲过,通过扩展持有者,使持有者形成抽象类,然后实现多个具体持有者,策略模式可以转化为桥接模式. 桥接模式定义为:将抽象部分与实现部分分离,使它们都可以独立的变化,在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,使用桥接模式可以应对多维度的变化. 主要有两个要点 1.有两个维度的变化,彼此的变化应该不会受到对方的干扰 2.通过接口进行关联,共有n*m种组合 3.其中一个维度,保存这另外一个维度的引用 二.模式代码: 维度一 interface Impl…
一.概述在软件开发中,我们有时候会遇上一个对象具有多个变化维度.比如对汽车对象来说,可能存在不同的汽车类型,如公共汽车.轿车等,也可能存在不同的发动机,如汽油发动机.柴油发动机等.对这类对象,可应用桥接模式来增强系统灵活度,避免由于多维度变化带来的复杂性.二.桥接模式桥接模式利用对象的组合关系将不同的变化维度分离,使其可以沿着各自的维度来变化.其结构图如下: Abstraction定义了抽象类,并包含Implementor对象.RefinedAbstraction实现了抽象类.Implement…
给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子.角色:环境角色(PlayContent):定义解释规则的全局信息.抽象解释器(Empress):定义了部分解释具体实现,封装了一些由具体解释器实现的接口.具体解释器(MusicNote):实现抽象解释器的接口,进行具体的解释执行. 应用实例:编译器.运算表达式计算. 优点: 1.可扩展性比较好,灵活. 2.增加了新的解释表达式的方式. 3.易于实现简单文法. 缺点: 1.可利用场景比较少. 2.对于复…
备忘录模式 备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象.备忘录模式属于行为型模式. 介绍 意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态. 主要解决:所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态. 何时使用:很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者错误的操作,能够恢复到他原先的状态…
命令模式 将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化.对请求排队或记录请求日志,以及支持撤销的操作. 命令模式以松散耦合主题为基础,发送消息.命令和请求,或通过一组处理程序发送任意内容.每个处理程序都会自行判断自己能否处理请求.如果可以,该请求被处理,进程停止.您可以为系统添加或移除处理程序,而不影响其他处理程序. 命令模式的四种角色: 1. 接收者(Receiver)负责执行与请求相关的操作 2. 命令接口(Command)封装execute().undo()等方法 3…