追蹤
兔子也會的遊戲設計
關於部落格
一個推廣XNA與OGRE的園地,當然還有其他關於遊戲設計的主題,歡迎有興趣的同好交流指教
  • 104824

    累積人氣

  • 0

    今日人氣

    0

    追蹤人氣

表象模式

//表象模式

using System;

namespace Facade
{
    ///    
    /// 主控台測試部分
    ///
    class Client
    {
        ///
        /// 應用程式的主進入點。
        ///
        [STAThread]
        static void Pause()
        {
            Console.WriteLine("Press Enter To Continue....");
            Console.ReadLine();
        }

        static void Main(string[] args)
        {
            //客戶唯一會接觸到的物件root
            //只要對他溝通 他會幫你處理好內部應該做的事
            //客戶不用理會細節
            Root root = new Root();
            Console.WriteLine("進入初始化步驟--");
            root.Initialize();
            Console.WriteLine("nn進入建立場景步驟--");
            root.SceneManager("Octree");
            Console.WriteLine("nn進入繪圖步驟--");
            root.StartRendering();
            Pause();
        }
    }
    //root類別 也是表象類別
    class Root
    {       
        //內部處理其他類別
        static Log log;
        static Window window;
        static SceneManger sceneMgr;      

        //建構子
        static Root()
        {           
            log= new Log();
            window =new Window ();
            sceneMgr = new SceneManger();
        }
        //初始化
        public void Initialize()
        { 
            log.Initialize();
            window.Initialize();
        }
        //建立場景
        public void SceneManager(string type)
        {
            sceneMgr.CreateScene(type);
        }
        //開始繪圖
        public void StartRendering()
        {
            sceneMgr.GetScene();
            window.ShowWindow();
            log.Write("開始繪圖");
        }    
    }

    //紀錄檔案類別
    class Log
    {     
        public void Initialize()
        {
            Console.WriteLine("我是LOG類別 負責輸出資訊 先在這裡設定路徑");
        }
        public void Write(string message)
        {
            Console.WriteLine(message);
        }
    }

    //視窗管理類別
    class Window
    {
        public void Initialize()
        {
            Console.WriteLine("我是Window類別 負責建立視窗");
        }
        public void ShowWindow()
        {
            Console.WriteLine("顯示視窗");
        }
    }

    //場景管理類別
    class SceneManger
    {
        private string type="沒有場景管理";       
        public void CreateScene(string type)
        {
            Console.WriteLine("我是SceneManger類別 負責建立場景");
            if (type.ToLower() == "bsp" || type.ToLower() == "octree" || type.ToLower() == "quadtree")
                this.type = type; 
            Console.WriteLine("建立一個"+this.type+"場景");           
        }
        public void GetScene()
        {
            Console.WriteLine("獲取目前的場景:"+type);
        }
    }
}

相簿設定
標籤設定
相簿狀態