扒开腿挺进岳湿润的花苞视频|将军边走边挺进她H树林|挺进朋友人妻张婉莹身体|岳脱得精光让我挺进去视频|第一次挺进莹莹的身体里视频|脱岳裙子从后面挺进去视频

新疆軟件開發(fā)

本站首頁 軟件開發(fā) 成功案例 公司新聞 公司簡介 客服中心 軟件技術 網站建設
  您現在的位置: 新疆二域軟件開發(fā)公司 >> .Net技術 >> 文章正文

Facade Pattern學習總結


 

  首先,Façade模式的作用是什么?簡化接口。比如我們買電腦,當電腦店店員把機子組裝好后交給我們,我們拿回家把顯示器鍵盤等的插頭都插到機箱后面,然后用電腦時只要按一下主機箱上的電源,電腦就啟動了,我們無需關心機箱內部各個部件是如何啟動,是CPU先過電還是硬盤先過電。在這里,這個機箱就可以認為是一個Façade,這個Façade(機箱)就使啟動電腦變得很容易,就算是一個完全不懂電腦的人,也知道如何啟動電腦了。這就是Façade最大作用所在:簡化接口,使得客戶程序(人)更方便地使用子系統(電腦)。試想,如果沒有機箱,那我們想啟動電腦豈不是得去記先啟動CPU還是先啟動硬盤?要怎么啟動它們?同時,Façade也讓系統耦合度更低,因為你不需要直接跟CPU、硬盤等直接接觸了。

接下來就用代碼示例一下:
下面是幾個電腦配件類,它們都有一個Run()方法和一個Stop()方法,分別表示它們的啟動和關閉:
            //CPU
       internal class CPU {
       public void Run() {

           Console.WriteLine("Cpu is running...");

       }

       public void Stop() {

           Console.WriteLine("Cpu stopped.");

       }

    }

    //主板
        internal class MainBoard {

       public void Run() {

           Console.WriteLine("MainBoard is running...");

       }

       public void Stop() {

           Console.WriteLine("MainBoard stopped.");

       }

    }

    //硬盤
       internal class HardDisk {

       public void Run() {

           Console.WriteLine("HardDisk is running...");

       }

       public void Stop() {

           Console.WriteLine("HardDisk stopped.");

       }

    }

    //內存
       internal class Memory {

       public void Run() {

           Console.WriteLine("Memory is running...");

       }

       public void Stop() {

           Console.WriteLine("Memory stopped.");

       }

    }

    //電源
       internal class Power {

       public void Run() {

           Console.WriteLine("Power is running...");

       }

       public void Stop() {

           Console.WriteLine("Power stopped");

       }

    }

然后是個主機類(Facade):

       /// <summary>
       /// 電腦主機(Façade(外觀)類)
       /// </summary>
       public class HostComputerFacade {

       private CPU cpu;

       private MainBoard mainBoard;

       private HardDisk hardDisk;

       private Memory memory;

       private Power power;      

       //構造方法,初始化各個配件
          public HostComputerFacade() {

           cpu = new CPU();

           mainBoard = new MainBoard();

           hardDisk = new HardDisk();

           memory = new Memory();

           power = new Power();

       }

       //啟動電腦,我不知道各配件的啟動順序如何,我們不妨假設它們就按如下順序啟動
            public void TurnOn() {

           power.Run();

           mainBoard.Run();

           cpu.Run();

           memory.Run();

           hardDisk.Run();

       }

       //關閉電腦
            public void ShutDown() {

           hardDisk.Stop();

           memory.Stop();

           cpu.Stop();

           mainBoard.Stop();

           power.Stop();

       }

    }

  然后我們就可以在Main()方法中使用“電腦”了:

          public static void Main(string[] args) {

           HostComputerFacade hcf = new HostComputerFacade();

          

           hcf.TurnOn();

           //…這里做一些使用電腦的操作

           hcf.ShutDown();
          }

Look,客戶程序要是想“使用電腦”的話,只要實例化主機,然后按下電源開關(TurnOn()),相箱內各部件就自動按順序啟動了,再長按電源開關幾秒鐘(ShutDown()),機箱內各部件就按順序停止了,而如果沒有這個HostComputerFacade類的話,我們就要親自動手讓Power啟動、再讓MainBoard啟動,然后再讓CPU啟動…,關的時候也要先讓HardDisk停止,再讓Memory停止…,那豈不太麻煩了,對吧?

總 結:
Facade模式的作用就在于簡化接口,同時更松耦合,而各個子系統之間一般是聯系比較緊的,就像機箱內的各配件,在某種意義上說,它們之間的聯系是挺緊的。


 

作者:未知 | 文章來源:cnblogs | 更新時間:2008-3-23 13:05:40

  • 上一篇文章:

  • 下一篇文章:

  • 相關文章:
    沒有相關文章
    軟件技術
    · 開發(fā)語言
    · Java技術
    · .Net技術
    · 數據庫開發(fā)
    最新文章  
    ·.net技術 asp.net MVC3 Vi
    ·.net將視頻文件格式轉換成
    ·NET Framework 2.0 Servic
    ·如何動態(tài)修改winform的app
    ·asp,net軟件結構設計和相關
    ·學習怎樣使用ASP.NET中的虛
    ·,net基礎類的學習:system
    ·.net學習:c#事件的深入分
    ·Facade Pattern學習總結
    ·C#如何設置或者獲取目錄的
    ·如何使用XSL來定義ASP.NET
    ·理解WCF Data Contract契約
    ·如何能在.net2.0開發(fā)的控件
    ·模式怎樣使用,講解模式的
    ·如何解決Menu菜單被frame遮
    關于我們 | 軟件開發(fā) | 下載試用 | 客服中心 | 聯系我們 | 友情鏈接 | 網站地圖 | 新疆電子地圖 | RSS訂閱
    版權所有 © 2016 新疆二域軟件開發(fā)網 m.jdtbank.com All Rights Reserved 新ICP備14003571號
    新疆軟件開發(fā)總機:0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯大廈A-5C 郵編:830000
     
    集贤县| 阳春市| 旅游| 额济纳旗| 抚松县| 怀远县| 五指山市| 拜城县| 和龙市| 略阳县| 古浪县| 江达县| 新野县| 屯留县| 阿坝县| 海林市| 论坛| 桐城市| 天长市| 科技| 开平市| 阿拉尔市| 顺平县| 鹿邑县| 福贡县| 泽普县| 凌源市| 神农架林区| 宜兰市| 孝义市| 溧水县| 绥中县| 包头市| 长垣县| 嘉鱼县| 昌邑市| 青浦区| 宁蒗| 罗甸县| 濮阳市| 大石桥市|