zoukankan      html  css  js  c++  java
  • Head First设计模式——桥接模式

    桥接模式

    桥接模式:不只改变你的实现,也改变你的抽象。

    如果有一个电视厂家,遥控器需要升级,电视也需要修改。这种变化部分的封装就适合使用桥接模式,桥接模式通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变。

    设计类图:

    实现遥控器抽象类

    1     public abstract class RemoteControl
    2     {
    3         public TV tv;
    4         public void SetTV(TV tv) {
    5             this.tv = tv;
    6         }
    7 
    8         public abstract void SetChannel();
    9     }

    具体子类

    1     public class ConcreteRemote : RemoteControl
    2     {
    3         public override void SetChannel()
    4         {
    5             this.tv.TuneChannel();
    6         }
    7     }

    TV接口类

    1     public interface TV 
    2     {
    3         public void TuneChannel();
    4     }

    特定TV实现

     1      class PandaTV : TV
     2     {
     3         public void TuneChannel()
     4         {
     5             Console.WriteLine("熊猫电视调频道");
     6         }
     7     }
     8 
     9 
    10     class ChangHongTV:TV
    11     {
    12         public void TuneChannel()
    13         {
    14             Console.WriteLine("长虹电视调频道");
    15         }
    16     }

    测试桥接模式

       现在有了两个层次结构,其中一个是遥控器,另一个是平台特定电视机实现。有了桥接的存在,就可以独立的改变这两个层次。

    桥接的优点:

    1、将实现予以解耦,让它和界面之间不再永久绑定。

    2、抽象和实现可以独立扩展,不会影响到对方。

    3、对于”具体的抽象类“所做的改变,不会影响到客户

    桥接的用途和缺点:

    1、适合使用在需要跨平台的图形和窗口系统上。

    2、当需要用不同的方式改变接口和实现时,桥接模式很好用。

    3、桥接模式的确定时增加了复杂度。

  • 相关阅读:
    Teradata中fastload使用
    Teradata 的rank() 和 row_number() 函数
    Oracle 10g下载链接
    SSH时不需输入密码
    Linux环境下GIT初次使用
    模块与包的概念
    迭代器 生成器
    Python
    Python
    函数式编程-尾递归、尾调用
  • 原文地址:https://www.cnblogs.com/SunSpring/p/12465036.html
Copyright © 2011-2022 走看看