zoukankan      html  css  js  c++  java
  • 桥接模式

    定义

    事物类型本身有着多维度的变化,当我们在面对这样的处境时,一味的继承去扩展,会使得维度低的类型非常臃肿,代码耦合度会非常高。如何的解耦,设计的思想告诉我们---尽量用组合代替继承,这就引入了桥接模式。使用组合代替继承这就是桥接的原理所在。

    类图

    代码

     1  public interface IMobilePhone
     2     {
     3         void Call();
     4         void SendMessage(string message);
     5     }
     6     public class NormalPhone : IMobilePhone
     7     {
     8 
     9         public void Call()
    10         {
    11             Console.WriteLine("使用普通手机打电话");
    12         }
    13 
    14         public void SendMessage(string message)
    15         {
    16             Console.WriteLine("使用普通手机发送消息:"+message);
    17         }
    18     }
    19     public class ItelligentPhone : IMobilePhone
    20     {
    21 
    22         public void Call()
    23         {
    24             Console.WriteLine("使用智能手机打电话");
    25         }
    26 
    27         public void SendMessage(string message)
    28         {
    29             Console.WriteLine("使用智能手机发送消息:" + message);
    30         }
    31     }
    32     public abstract class HighPricePhone
    33     {
    34         public IMobilePhone MobilePhone { get; set; }
    35         public HighPricePhone(IMobilePhone mobilePhone)
    36         {
    37             this.MobilePhone = mobilePhone;
    38         }
    39         public virtual void Call()
    40         {
    41             MobilePhone.Call();
    42         }
    43         public virtual void SendMessage(string message)
    44         {
    45             MobilePhone.SendMessage(message);
    46         }
    47         public abstract void Cost();
    48     }
    49     public class SunPhone : HighPricePhone
    50     {
    51         public override void Cost()
    52         {
    53             Console.WriteLine("it is soso");
    54         }
    55     }
    56     public class AppPhone : HighPricePhone
    57     {
    58         public override void Cost()
    59         {
    60             Console.WriteLine("it is not bad");
    61         }
    62     }
    View Code

    总结

    举的例子还是非常简单。如果不用桥接模式则会是智能手机继承至手机接口,高价智能手机(SunPhone,AppPhone)又继承至智能手机接口,当遇到再多的扩展时,我们再继承下去。那样的话就比较糟糕了。而当用桥接方式时,是一定维度的扩展变成组成的元素,通过内部调用方式去实现,不失为一个好的方案。

    Top
    收藏
    关注
    评论
  • 相关阅读:
    三目运算符
    程序流程结构——if语句
    类型转换
    运算符
    scanf函数与getchar函数
    结构体成员有冒号 位域 位段
    AI作曲的一个点子
    《惯性导航》邓正隆 第一章 惯性导航的基础知识
    《C陷阱与缺陷》 第0章导读 第1章词法陷阱
    类与类之间的关系 18
  • 原文地址:https://www.cnblogs.com/Joy-et/p/4884100.html
Copyright © 2011-2022 走看看