1. 程式人生 > >橋接模式

橋接模式

安卓 andro over style rri 手機 bstr spa 個數

橋接模式應用:當應該m和n變化就需要建立m*n個類。

利用橋接我們封裝變化,就只需要建立M+N個類

主方法

namespace 橋接模式
{
    /// <summary>
    /// 橋接模式:
    /// 當我們需要小米ios、小米安卓、蘋果ios、蘋果安卓手機的時候,對應要件4個類。
    /// 這個時候我們分析手機和操作系統是變化的,需要建m*n個類(m:手機品牌個數 n:系統個數)
    /// 
    /// 這個時候我們可以封裝變化
    /// 在手機中定義一個系統字段,外部來賦值,這樣就只用建m+n個類
    /// </summary>
    class Program
    {
        
static void Main(string[] args) { //蘋果的ios系統手機 BasePhone iphone = new Iphone(); iphone.system = new IOS().GetSystem(); iphone.Call(); iphone.Message(); //小米的ios系統手機 BasePhone xiaoMi = new XiaoMi(); xiaoMi.system
= new IOS().GetSystem(); xiaoMi.Call(); xiaoMi.Message(); //小米的安卓系統手機 BasePhone xiaoMi = new XiaoMi(); xiaoMi.system = new Android().GetSystem(); xiaoMi.Call(); xiaoMi.Message(); Console.ReadKey(); } } }

新建手機類

namespace 橋接模式
{
    public abstract class BasePhone
    {
        public string system = null;
        public abstract void Call();
        public abstract void Message();
    }
}

    public class Iphone:BasePhone
    {
        public override void Call()
        {
            Console.WriteLine("我這個是{0}手機,用的是{1}操作系統來{2}", this.GetType().Name, base.system, new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name);
        }

        public override void Message()
        {
            Console.WriteLine("我這個是{0}手機,用的是{1}操作系統來{2}", this.GetType().Name, base.system, new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name);
        }
    }

    public class XiaoMi:BasePhone
    {
        public override void Call()
        {
            Console.WriteLine("我這個是{0}手機,用的是{1}操作系統來{2}", this.GetType().Name, base.system, new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name);
        }

        public override void Message()
        {
            Console.WriteLine("我這個是{0}手機,用的是{1}操作系統來{2}", this.GetType().Name, base.system, new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name);
        }
    }

新建系統類

namespace 橋接模式
{
    public interface ISystem
    {
        string GetSystem();
    }
}

    public class IOS:ISystem
    {
        public string GetSystem()
        {
            return this.GetType().Name;
        }
    }

    public class Android:ISystem
    {
        public string GetSystem()
        {
            return this.GetType().Name;
        }
    }

橋接模式