從0自學C#09--抽象原廠模式執行個體

來源:互聯網
上載者:User
1.適用環境

(主要是用在生產製造多種產品,軟體有多種皮膚,多種資料庫等環境)

  • 一個系統不應當依賴於產品類執行個體如何被建立、組合和表達的細節,這對於所有類型的原廠模式都是重要的。

  • 系統中有多於一個的產品族,而每次只使用其中某一產品族。

  • 屬於同一個產品族的產品將在一起使用,這一約束必須在系統的設計中體現出來。

  • 系統提供一個產品類的庫,所有的產品以同樣的介面出現,從而使用戶端不依賴於具體實現

2.模式定義

抽象原廠模式(Abstract Factory Pattern):提供一個建立一系列相關或相互依賴對象的介面,而無須指定它們具體的類。抽象原廠模式又稱為Kit模式,屬於對象建立型模式。

3.模式結構

抽象原廠模式包含如下角色:

  • AbstractFactory:抽象工廠

  • ConcreteFactory:具體工廠

  • AbstractProduct:抽象產品

  • Product:具體產品

為了更清晰地理解Factory 方法模式,需要先引入兩個概念:

  • 產品等級結構:產品等級結構即產品的繼承結構,如一個抽象類別是電視機,其子類有海爾電視機、海信電視機、TCL電視機,則抽象電視機與具體品牌的電視機之間構成了一個產品等級結構,抽象電視機是父類,而具體品牌的電視機是其子類。

  • 產品族 :在抽象原廠模式中,產品族是指由同一個工廠生產的,位於不同產品等級結構中的一組產品,如海爾電器工廠生產的海爾電視機、海爾電冰箱,海爾電視機位於電視機產品等級結構中,海爾電冰箱位於電冰箱產品等級結構中。

4.代碼

流程介面

interface IFlow    {        IRxAlign CreateRxAlign();        IDispensing CreateDispensing();    }class FlowA : IFlow    {        public IRxAlign CreateRxAlign()        {            return new RxAlignA();        }        public IDispensing CreateDispensing()        {            return new DispensingA();        }    }class FlowB : IFlow    {        public IRxAlign CreateRxAlign()        {            return new RxAlignB();        }        public IDispensing CreateDispensing()        {            return new DispensingB();        }    }

耦合介面

interface IRxAlign    {         event LocationChange LocChange;        int[] RoPulse { set; get; }        int[] FiPulse { set; get; }        int[] RoMaxStep { set; get; }        double[] RoRESTarget { set; get; }        double[] TxP { set; get; }        double[] RESmin { set; get; }        double[] RESmax { set; get; }        Coordinate Location { set; get; }        void LoadPara(string PN);        void GoHome();        void Start();        void Stop();    }class RxAlignA : IRxAlign    {        private ControlCard card;        private QSFP28 product;        private double RESmax, RESmin, RES;        private double[] TxPower;        public RxAlignA()        {            this.RESmax = 1.0;            this.RESmin = 0.4;        }        public bool ConfigPara()        {            try            {                this.card = new ControlCard();                this.product = new QSFP28();                return true;            }            catch            {                return false;            }        }        public void GoHome()        {            //QSFP28 go home        }        public void Start()        {            //QSFP28 start        }        public void Stop()        {            card = null;            product = null;        }        ...    }class RxAlignB : IRxAlign    {        private ControlCard card;         private CFP4 product;         private double RESmax, RESmin, RES;         private double[] TxPower;         public RxAlignB()        {            this.RESmax = 1.0;             this.RESmin = 0.4;        }        public bool ConfigPara()        {            try            {                this.card = new ControlCard();                 this.product = new CFP4();                 return true;            }            catch            {                return false;            }        }        public void GoHome()        {            //CFP4 go home        }        public void Start()        {            //CFP4 start        }        public void Stop()        {            card = null;            product = null;        }        ...    }

點膠介面

interface IDispensing    {        //code    }class DispensingA : IDispensing    {        //code    }class DispensingB : IDispensing    {        //code    }

主線程調用

flow = new FlowA();align = flow.CreateRxAlign();align.LoadPara(this.comboBoxPN.Text);dispens = flow.CreateDispensing();dispens.//code...

以上就是 從0自學C#09--抽象原廠模式執行個體的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.