小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Facade外觀模式

 頭號碼甲 2021-07-06

>>返回《C#常用設計模式》

1. 簡介

  1. 概述

    • 為子系統(tǒng)中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用
      • 比如對同一種類型但不同廠家的設備:攝像頭、人臉識別設備、RFID讀卡器等
  2. 模式中的角色

    1. 外觀類(Facade):外觀類知道哪些子系統(tǒng)類負責處理請求,將客戶的請求代理給恰當?shù)淖酉到y(tǒng)對象。
    2. 子系統(tǒng)類集合(SubSystem Classes):子系統(tǒng)類集合實現(xiàn)了子系統(tǒng)的功能,處理外觀類對象指派的任務
  3. 類圖

2. 示例

namespace WindowsFormsApplication1
{
    class Program
    {
        static void Main()
        {
            IDevice d1 = new FHCardReader();
            d1.Open();
            d1.Send("GpoHigh");
            d1.Close();
            
            IDevice d2 = new ImpinjCardReader();
            d2.Open();
            d2.Send("GpoHigh");
            d2.Close();
        }
    }

    //Facade
    public interface IDevice
    {
        void Open();
        void Close();
        void Send(string msg);
    }
    //ConcreteFacadeA
    public class FHCardReader : IDevice
    {
        FHReader reader = new FHReader();
        FHGpo gpo = new FHGpo();
        public void Open()
        {
            reader.Connect();
        }
        public void Close()
        {
            reader.DisConnect();
        }
        public void Send(string msg)
        {
            switch (msg)
            {
                case "Config": reader.ApplyConfig(); break;
                case "GpoHigh": gpo.SetGpo(true); break;
                case "GpoLow": gpo.SetGpo(false); break;
                default:
                    break;
            }
        }

        public void Send()
        {
            throw new NotImplementedException();
        }
    }
    //ConcreteFacadeB
    public class ImpinjCardReader : IDevice
    {
        ImpinjReader reader = new ImpinjReader();
        public void Open()
        {
            reader.Connect();
        }
        public void Close()
        {
            reader.DisConnect();
        }
        public void Send(string msg)
        {
            switch (msg)
            {
                case "Config": reader.ApplyConfig(); break;
                case "GpoHigh": reader.SetGpo(true); break;
                case "GpoLow": reader.SetGpo(false); break;
                default:
                    break;
            }
        }
    }
    //AnApi
    public class ImpinjReader
    { 
        public void Connect(){}
        public void DisConnect() { }
        public void ApplyConfig() { }
        public void SetGpo(bool state) { }
 //。。。。一堆用不上的功能
    }
    //B1Api
    public class FHReader
    {
        public void Connect() { }
        public void DisConnect() { }
        public void ApplyConfig() { }
 //。。。。一堆用不上的功能
    }
    //B2Api
    public class FHGpo
    {
        public void SetGpo(bool state) { }
 //。。。。一堆用不上的功能
    }

}

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多