C# Bridge Pattern(Handle/Body)】的更多相关文章

/* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). * Version 3.0.2 * * Do not make changes to this file unless you know what you are doing--modify * t…
模式动机设想如果要绘制矩形.圆形.椭圆.正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色.绿色.蓝色等,此时至少有如下两种设计方案: 第一种设计方案是为每一种形状都提供一套各种颜色的版本.第二种设计方案是根据实际需要对形状和颜色进行组合. 对于有两个变化维度(即两个变化的原因)的系统,采用方案二来进行设计系统中类的个数更少,且系统扩展更为方便.设计方案二即是桥接模式的应用.桥接模式将继承关系转换为关联关系,从而降低了类与类之间的耦合,减少了代码编写量. 模式定义桥接模…
开篇还是引用吕振宇老师的那篇经典的文章<设计模式随笔-蜡笔与毛笔的故事>.这个真是太经典了,没有比这个例子能更好的阐明桥接模式了,这里我就直接盗来用了. 现在市面上卖的蜡笔很多,各种型号,各种颜色种类繁多, 假如一盒蜡笔有24种颜色,那么它能涂抹出24种不同的颜色来,蜡笔型号是固定的,如果想画出各种线条那么就要购买不同型号的蜡笔,假如我们要涂抹出粗,中,细三种线条,那么我们就要买3盒粗,中,细型号的蜡笔才能满足需求,那么就是3盒*24色=72只蜡笔.假如使用毛笔来作画,我们需要准备3只粗,中,…
#写在前面 前面写了那么设计模式了,有没有觉得有些模式之间很类似,甚至感觉作用重叠了,模式并不是完全隔离和独立的,有的模式内部其实用到了其他模式的技术,但是又有自己的创新点,如果一味地认为每个模式都是独一无二,与其他模式完全区别的,这是一种误区 #引入模式动机 这个例子清晰而直白的说明了为啥要用桥接模式,我就拿过来用了,链接在参考里     设想如果要绘制矩形.圆形.椭圆.正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色.绿色.蓝色等,此时至少有如下两种设计方案:  …
一.桥接模式简介(Brief Introduction) 桥接模式(Bridge Pattern),将抽象部分与它的实现部分分离,使的抽象和实现都可以独立地变化. Decouple an abstraction from its implementation so that the two can vary independently.. 什么是聚合/组合: 聚合(Aggregation),当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚合关系.聚合是关联关系的一种,是较…
1,定义           桥接模式(Bridge Pattern),也称为桥梁模式,其用意是将抽象化与实现化脱耦,使得两者可以独立的变化,它可以使软件系统沿着多个方向进行变化,而又不引入额外的复杂度, 桥接模式是连接功能与实现部分的设计模式,其用意在于使功能与实现分离,从而支持多维度的变化.   现实抽象理解: 开关与电灯,开关通过电线连接电灯,进而控制电灯,在这里,电灯可以认为是实现部分,而开关代表功能部分,我们可以独立的更换开关或电灯两者之一,而对另一方没有任何影响, 也就是说每个部分的…
  .NET设计模式(9):桥接模式(Bridge Pattern)   桥接模式(Bridge Pattern) --.NET设计模式系列之九 年月 实现代码如下:..所谓抽象和实现沿着各自维度的变化,即"子类化"它们,得到各个子类之后,便可以任意它们,从而获得不同平台上的不同型号....如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系..设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的..一…
原文:乐在其中设计模式(C#) - 桥接模式(Bridge Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 桥接模式(Bridge Pattern) 作者:webabcd 介绍 将抽象部分与它的实现部分分离,使它们都可以独立地变化. 示例 有一个Message实体类,对它的操作有Insert()和Get()方法,现在使这些操作的抽象部分和实现部分分离. MessageModel using System; using System.Collections.Generic;…
原文 第7章 桥接模式(Bridge Pattern) 定义: 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式. 意图: 将抽象部分与实现部分分离,使它们都可以独立的变化. 结构图: 举例:KFC中的可乐, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2…
桥接模式 Bridge Pattern 结构设计模式 定义: 分离抽象部分和实现部分,使他们独立运行. 避免使用继承导致系统类个数暴增,可以考虑桥接模式. 桥接模式将继承关系转化为关联关系,减少耦合,减少代码量. 例如: public interface Shape { public void bepaint(String color); } public abstract class Color { Shape shape; public void setShape(Shape shape)…
一.引言 今天我们要讲[结构型]设计模式的第二个模式,该模式是[桥接模式],也有叫[桥模式]的,英文名称:Bridge Pattern.大家第一次看到这个名称会想到什么呢?我第一次看到这个模式根据名称猜肯定是连接什么东西的.因为桥在我们现实生活中经常是连接着A地和B地,再往后来发展,桥引申为一种纽带,比如:丝绸之路是连接亚洲和欧洲的桥梁.有了桥,我们出行方便了,从一个地方到另一个地方在有桥的情况更方便了(此处不许抬杠,当然是需要桥的情况).桥是针对桥的使用环境来说的,解决了跨越和衔接的问题.在设…
桥接模式(Bridge Pattern) ——.NET设计模式系列之九 Terrylee,2006年2月 概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式. 意图 将抽象部分与实现部分分离,使它们都可以独立的变化.[GOF <设计模式>] 结构图 图1 Bridge模式结构图 生活中的例子 桥接模式将抽象部分与它的实现分离…
桥接模式(Bridge Pattern) 介绍将抽象部分与它的实现部分分离,使它们都可以独立地变化. 示例有一个Message实体类,对它的操作有Insert()和Get()方法,现在使这些操作的抽象部分和实现部分分离. MessageModel using System; using System.Collections.Generic; using System.Text; namespace Pattern.Bridge { /// <summary> /// Message实体类 //…
学习地址:http://www.runoob.com/design-pattern/bridge-pattern.html 桥接模式(Bridge Pattern) 桥接模式(Bridge pattern)属于结构型模式,它提供一个桥接结构,来实现二者的解耦. 这种模式使用一个作为桥接的接口,使得实体类的功能独立于接口实现类.这两种类型的类可被结构化改变而互不影响. 博主餐好了几个博客,于是顺手也采取了颜色与形状的简单例子. 主要解决:个人理解,对类的多维切分,从某种角度上方便了扩展. 何时使用…
有点通了 <?php /* The bridge pattern is used when we want to decouple a class or abstraction from its implementation, allowing them both to change independently. This is useful when the class and its implementation vary often */ interface MessagingInterf…
今天我要说说我自己,梦想中的我自己,我身价过亿,有两个大公司,一个是房地产公司,一个是服装制造业,这两个公司都很赚钱,天天帮我在累加财富,其实是什么公司我倒是不关心,我关心的是是不是在赚钱,赚了多少,我先用类图表示一下我这两个公司: 类图很简单,声明了一个 Corp 抽象类,定义一个公司的抽象模型,公司首先要是赚钱的,不赚钱谁开公司,做义务或善举那也是有背后利益支撑的,我还是赞这句话“天下熙熙,皆为利来:天下壤壤,皆为利往”,那我们先看 Corp 类的源代码: package com.patte…
转自:http://www.cnblogs.com/houleixx/archive/2008/02/23/1078877.html 记得看原始链接的评论. 学习设计模式也有一段时间了,今天就把我整理的一篇课程和大家分享,有不妥之处欢迎指出. 生活中的一个例子:    就拿汽车在路上行驶的来说.即有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶.这你会发现,对于交通工具(汽车)有不同的类型,然而它们所行驶的环境(路)也在变化,在软件系统中就要适应两个方面的变化?怎样实…
概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式. 意图 将抽象部分与实现部分分离,使它们都可以独立的变化.[GOF <设计模式>] 结构图 图1 Bridge模式结构图 生活中的例子 桥接模式将抽象部分与它的实现分离,使它们能够独立地变化.一个普通的开关控制的电灯.电风扇等等,都是桥接的例子.开关的目的是将设备打开或关闭…
桥梁模式是对象的结构模式.又称为柄体(Handle and Body)模式或接口(Interface)模式.桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化”. 桥梁模式的用意 桥梁模式虽然不是一个使用频率很高的模式,但是熟悉这个模式对于理解面向对象的设计原则,包括“开-闭”原则以及组合/聚合复用原则都很有帮助.理解好这两个原则,有助于形成正确的设计思想和培养良好的设计风格.桥梁模式的用意是“将抽象化(Abstraction…
动机(Motivate):    在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度? 意图(Intent):    将抽象部分与实现部分分离,使它们都可以独立的变化.                                  ------<设计模式>GOF结构图(Struct): 生活中的例子: 我想大家小时候都有用蜡笔画画的经历吧.红红绿绿的蜡笔…
桥接模式是一种对象结构型模式,其将抽象部分和它的实现部分分离,使它们都可以独立的变化,又称为柄体(Handle and Body)模式或接口(Interface)模式. 优点: 1.分离抽象接口及其实现部分.桥接模式使用“对象间的关联关系”解耦了抽象类和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度变化(即抽象和实现不再在同一个继承层次中结构中,而是“子类化”它们,使它们各自都具有自己的子类,以便任意组合子类,从而获得多维度组合对象). 2.在很多情况下,桥接模式可以取代多层继承方案.…
桥接模式将抽象与具体实现分离,使得抽象与具体实现可以各自改变互不影响.桥接模式属于设计模式中的结构模式. 桥梁模式涉及的角色 抽象(Abstraction)角色:抽象定义,引用对接口对象的引用. 重新抽象(RefinedAbstraction)角色:重新抽象化角色,对父类中抽象的重新定义. 待实现接口(Implementor)角色:定义待实现的接口. 具体实现(ConcreteImplementor)角色:这个给出实现化角色接口的具体实现. 实例 上面的角色描述对应下图实例可以很容易的理解 这样…
引言 例如我有好几个项目,需要外包出去做各种类型的测试,不同的公司基础费用不同,不同的测试类型价格也是不同的.此时不同的项目选择不同的公司和不同类型的测试进行测试价格都是不同的.于是我们可以创建一个项目抽象类,一个公司抽象类,一个测试类型抽象类,然后实现各自的具体类,不同的项目使用不同的公司和测试类型,进行测试.抽象化与实现化解耦,二者可以独立变化.我们将这种通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦的类型称为桥接模式. 概念 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者…
一.引言 这里以电视遥控器的一个例子来引出桥接模式解决的问题,首先,我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器做为一个抽象类,抽象类中提供遥控器的所有实现,其他具体电视品牌的遥控器都继承这个抽象类,具体设计类图如下: 这样的实现使得每部不同型号的电视都有自己遥控器实现,这样的设计对于电视机的改变可以很好地应对,只需要添加一个派生类就搞定了,但随着时间的推移,用户需要改变遥控器的功能,如:用户可能后面需要对遥控器添加返回上一个台等功能时,此时上面的设计就需要修改抽象…
问题: 当存在多个独立的变化维度时,如果仍采用多层继承结构,会急剧的增加类的个数,因此可以考虑将各个维度分类,使他们不相互影响. 定义: 将抽象部分与它的实现部分进行分离,抽象部分只保留最为本质的部分,而其他对该类的扩展均放到实现部分,进而使他们独立地变化.并在抽象层建立耦合,方便对各个维度进行扩展. 结构图: Abstracttion:抽象类,是整个桥接模式所表述的各种类别的核心类,例如毛笔-颜色中的毛笔,图片-操作系统中的图片.首先它定义了扩展类中的接口,另外它还定义了一个关于实现类Impl…
一.引言 这里以电视遥控器的一个例子来引出桥接模式解决的问题,首先,我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器做为一个抽象类,抽象类中提供遥控器的所有实现,其他具体电视品牌的遥控器都继承这个抽象类,具体设计类图如下: 这样的实现使得每部不同型号的电视都有自己遥控器实现,这样的设计对于电视机的改变可以很好地应对,只需要添加一个派生类就搞定了,但随着时间的推移,用户需要改变遥控器的功能,如:用户可能后面需要对遥控器添加返回上一个台等功能时,此时上面的设计就需要修改抽象…
一.概述在软件开发中,我们有时候会遇上一个对象具有多个变化维度.比如对汽车对象来说,可能存在不同的汽车类型,如公共汽车.轿车等,也可能存在不同的发动机,如汽油发动机.柴油发动机等.对这类对象,可应用桥接模式来增强系统灵活度,避免由于多维度变化带来的复杂性.二.桥接模式桥接模式利用对象的组合关系将不同的变化维度分离,使其可以沿着各自的维度来变化.其结构图如下: Abstraction定义了抽象类,并包含Implementor对象.RefinedAbstraction实现了抽象类.Implement…
using System; namespace ConsoleApplication6 { class Program { static void Main(string[] args) { // 创建一个遥控器 RemoteControl remoteControl = new ConcreteRemote(); // 长虹电视机 remoteControl.Implementor = new ChangHong(); remoteControl.On(); remoteControl.Set…
桥接模式,用于将抽象化与实现化解偶,使得二者可以独立变化. 举一个数据库JDBC的例子: 定义一个Driver接口,不同的数据库实现的接口,如MySQL,SQLServer public interface Driver { public void connect(); } MySQL具体类: public class MySQL implements Driver { public void connect() { System.out.println("connect to MySQL&qu…
以下内容出自:<<24种设计模式介绍与6大设计原则>> 今天我要说说我自己,梦想中的我自己,我身价过亿,有两个大公司,一个是房地产公司,一个是服装制造业,这两个公司都很赚钱,天天帮我在累加财富,其实是什么公司我倒是不关心,我关心的是是不是在赚钱,赚了多少,这才是我关心的,我是商人呀,唯利是图是我的本性,偷税漏税是我的方法,欺上瞒下.压榨员工血汗 我是的手段嘛,我先用类图表示一下我这两个公司: 类图很简单,声明了一个Corp 抽象类,定义一个公司的抽象模型,公司首要是赚钱的,不赚钱谁…