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
    收藏
    关注
    评论
  • 相关阅读:
    垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
    自考感悟,话谈备忘录模式
    [每日一题] OCP1z0-047 :2013-07-26 alter table set unused之后各种情况处理
    Java实现 蓝桥杯 算法提高 p1001
    Java实现 蓝桥杯 算法提高 拿糖果
    Java实现 蓝桥杯 算法提高 拿糖果
    Java实现 蓝桥杯 算法提高 求arccos值
    Java实现 蓝桥杯 算法提高 求arccos值
    Java实现 蓝桥杯 算法提高 因式分解
    Java实现 蓝桥杯 算法提高 因式分解
  • 原文地址:https://www.cnblogs.com/Joy-et/p/4884100.html
Copyright © 2011-2022 走看看