Facade Pattern: 將一些相同屬性的類別重新打包整理成一個新的類別, 方便管理

下面例子Applications和Computers類別包裝成一個新的類別MyFacade,

在預設建構子階段, 初始化兩個成員資料, 分別為Applications和Computers物件實體化,

並提供兩個方法讓使用者呼叫, 可以擇一取出

image

image

加入參考Microsoft.VisualBasic

image

   1: using Microsoft.VisualBasic.ApplicationServices;
   2: using Microsoft.VisualBasic.Devices;
   1: // (1) Applications
   2:    public class Applications
   3:    {
   4:        private WindowsFormsApplicationBase m_MyApplication;
   5:        // 預設建構子
   6:        public Applications()
   7:        {
   8:            m_MyApplication = new WindowsFormsApplicationBase();
   9:        }
  10:        public AssemblyInfo Info
  11:        {
  12:            get
  13:            {
  14:                AssemblyInfo Info = new AssemblyInfo(System.Reflection.Assembly.GetExecutingAssembly());
  15:                return Info;
  16:            }
  17:        }
  18:    }
   1: // (2) Computers
   2:    public class Computers
   3:    {
   4:        private ComputerInfo m_computerInfo;
   5:        // 預設建構子
   6:        public Computers() {  this.m_computerInfo = new ComputerInfo(); }
   7:        public ComputerInfo Info
   8:        {
   9:            get
  10:            {
  11:                ComputerInfo cInfo = new ComputerInfo();
  12:                return cInfo;
  13:            }
  14:        }
  15:    }
   1: //-----------------------------------------------------------------------------
   2:    // (1)+(2)
   3:    public class MyFacade
   4:    {
   5:        Applications m_apps;
   6:        Computers m_pc;
   7:        public MyFacade()
   8:        {
   9:            m_apps = new Applications();
  10:            m_pc = new Computers();
  11:        }
  12:        public Applications Applications { get { return m_apps; } }
  13:        public Computers Computers{ get{return m_pc;} }
  14:    }

-----------------------------------------------------------------------------------------------------------------------------------

image

   1: private void button1_Click(object sender, EventArgs e)
   2: {
   3:     // 原始呼叫
   4:     Applications apps = new Applications();
   5:     MessageBox.Show(apps.Info.Copyright);
   6:     // Facade Pattern: 將一些相同屬性的類別重新打包整理成一個新的類別, 方便管理
   7:     // 間接呼叫
   8:     MyFacade myApp = new MyFacade();
   9:     MessageBox.Show(myApp.Computers.Info.OSFullName);
  10:     MessageBox.Show(myApp.Applications.Info.Copyright);
  11: }


參考資料: Visual C#程式設計實例演練與系統開發2013 許清榮

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 me1237guy 的頭像
    me1237guy

    天天向上

    me1237guy 發表在 痞客邦 留言(0) 人氣()