我讀設計模式之Bridge模式

來源:互聯網
上載者:User

      實現系統可能有多角度分類,每一種分類都有可能變化,那麼就把這種多角度分離出來讓他們獨立變化,減少他們之間的耦合。   
體現了:優先使用組合而不是繼承的設計原則   
一般實現:

Code
using System;   
  
namespace BridgePattern   
{   
    class Program   
    {   
        static void Main(string[] args)   
        {   
            ILog log = new DataBaseLog(new NetLog());   
            log.Write("logMsg");   
  
            ILog log2 = new DataBaseLog(new JavaLog());   
            log2.Write("logMsg");   
  
            Console.Read();   
        }   
    }   
  
    public interface ILog   
    {   
        void Write(string logMsg);   
    }   
  
    public class DataBaseLog : ILog   
    {   
        IPlatform plat;   
  
        public DataBaseLog(IPlatform p)   
        {   
            this.plat = p;   
        }   
  
        public void Write(string logMsg)   
        {   
            plat.ExecuteLog(logMsg);   
        }   
    }   
  
    public class FileLog : ILog   
    {   
          IPlatform plat;   
  
          public FileLog(IPlatform p)   
        {   
            this.plat = p;   
        }   
  
        public void Write(string logMsg)   
        {   
             plat.ExecuteLog(logMsg);   
        }   
    }   
  
    public interface IPlatform   
    {   
        void ExecuteLog(string log);   
    }   
  
    public class NetLog : IPlatform   
    {   
       public void ExecuteLog(string log)   
        {   
            Console.WriteLine("Net  Log");   
        }   
    }   
  
    public class JavaLog : IPlatform   
    {   
        public void ExecuteLog(string log)   
        {   
            Console.WriteLine("Java  Log");   
        }   
    }   
}  

執行個體:Code
using System;   
  
///實現系統可能有多角度分類,每一種分類都有可能變化,那麼就   
///把這種多角度分離出來讓他們獨立變化,減少他們之間的耦合。   
///體現了:優先使用組合而不是繼承的設計原則   
///-========================--   
///舉例:   
///Tms入庫作業:   
///1.入庫作業可以分為cell,mod入庫作業,而cell,mod又可分為良品和報廢品入庫;   
///2.其中可能增加【array入庫】作業(前一種分類);   
///3.也有可能增加【待測品】入庫(後一種分類)   
///4.假設cell,mod的良品和報廢品入庫方式一致   
///   
namespace BridgePattern   
{   
    class Demo1   
    {   
        static void Main()   
        {   
            產品 p = new 良品入庫();   
            產品入庫 入庫 = new Cell半成品入庫();   
            入庫.設定產品入庫(p);   
  
            入庫.執行入庫();   
  
  
            p = new 待檢品入庫();   
            入庫 = new Array品入庫();   
            入庫.設定產品入庫(p);   
            入庫.執行入庫();   
  
            Console.Read();   
        }   
    }   
  
    public abstract class 產品入庫   
    {   
        public 產品 product;   
  
        public void 設定產品入庫(產品 p)   
        {   
            this.product = p;   
        }   
  
        public virtual void 執行入庫()   
        {   
        }   
    }   
  
    public class Cell半成品入庫 : 產品入庫   
    {   
        public override void 執行入庫()   
        {   
            product.執行產品入庫("半成品cell入庫");   
        }   
    }   
  
    public class Mod成品入庫 : 產品入庫   
    {   
        public override void 執行入庫()   
        {   
            product.執行產品入庫("Mod成品入庫");   
        }   
    }   
  
    /// <summary>   
    /// 擴充   
    /// </summary>   
    public class Array品入庫 : 產品入庫   
    {   
        public override void 執行入庫()   
        {   
            product.執行產品入庫("Array品入庫");   
        }   
    }   
  
    public abstract class 產品   
    {   
        public virtual void 執行產品入庫(string goodsMsg)   
        {   
        }   
    }   
  
    public class 良品入庫 : 產品   
    {   
        public override void 執行產品入庫(string goodsMsg)   
        {   
            Console.WriteLine("良品入庫:" + goodsMsg);   
        }   
    }   
  
    public class 報廢品入庫 : 產品   
    {   
        public override void 執行產品入庫(string goodsMsg)   
        {   
            Console.WriteLine("報廢品入庫:" + goodsMsg);   
        }   
    }   
  
    /// <summary>   
    /// 擴充   
    /// </summary>   
    public class 待檢品入庫 : 產品   
    {   
        public override void 執行產品入庫(string goodsMsg)   
        {   
            Console.WriteLine("待檢品入庫:" + goodsMsg);   
        }   
    }   
  
  
}  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.