設計模式-簡單工廠模式


前言

點擊查看設計模式系列

設計模式的23種中,並沒有簡單工廠模式,然而大家都有寫簡單工廠模式,寫他的真實目的在於循序漸進理解后續的工廠模式,工廠方法,抽象工廠,也就是對工廠這個名詞做個理解。

簡單工廠模式

簡單工廠模式就是通過提供的數據,進入工廠類決策出,具體實例化那個類,在實例化的類中進行程序操作,然后返回可能被實例化類的公共基類,從基類中獲取你想要的結果。

舉例:如今看病,猶如部件在工廠加工,怎么說呢?打個比方,你去看男科,然而醫院有好多課室,你現在進醫院之后會迎面走來1個護士,先檢測你是男的女的或是什么情況,然后再帶你去屬於你的科室。

分析:這個迎面走來的這個護士:就是你首先選擇科室的決策者,因為他從你的描述中知道你的一些秘密,作為工廠方法。然而各個可是都屬於不同的對象等待你的到來,給你看病。各個科室的基類是醫院。等你看完病后,這個醫院會給你一個診斷治療的說法。

基類代碼:

     //醫院
     public class Room
    {
         //男科護士,婦科忽視說的內容
         protected string boyRoomSay, grilRoomSay;

         //返回男科忽視說的話
         public string getBoyRoom()
         {
             return boyRoomSay;
         }

         //返回婦科護士說的話
         public string getGrilRoom()
         {
             return grilRoomSay;
         }
    }

子類代碼:根據自身的特性,會讓不同的護士給你一種合理的說法

    //男科
     public class boyRoom : Room
     {
         public boyRoom(string sex)
         {
             if (sex == "")
             {
                 boyRoomSay = "歡迎進入男課室";
                 grilRoomSay = "呵呵,你不能來婦科看的。";
             }
             else
             {
                 boyRoomSay = "請問您是男是女!";
                 grilRoomSay = "請問您是男是女!";
             }
         }
     }
     //婦科
     public class grilRoom : Room
     {
         public grilRoom(string sex)
         {
             if (sex == "")
             {
                 grilRoomSay = "歡迎進入婦課";
                 boyRoomSay = "呵呵,你不能來男科看的。";
             }
             else
             {
                 boyRoomSay = "請問您是男是女!";
                 grilRoomSay = "請問您是男是女!";
             }
         }
     }

工廠:給你決策去哪里的小護士

     //構建工廠
     public class RoomFactory
     {
         public RoomFactory() { }
         //工廠中的決策者,給我一個參數,我說給你那個實例
         public Room getRoom(string sex)
         {
             if (sex=="")
             {
                 return new boyRoom(sex);
             }
             else
             {
                 return new grilRoom(sex);
             }
         }

     }

運行:

 public static void Main(string[] args)
        {
            Console.WriteLine("請問您性別是:");
//獲取你輸入的性別
string str = Console.ReadLine(); RoomFactory fac = new RoomFactory(); Room rom = fac.getRoom(str); Console.WriteLine("男科護士:" + rom.getBoyRoom()); Console.WriteLine("婦科護士:" + rom.getGrilRoom()); Console.ReadLine(); }

結果:

簡單工廠的基本原理:創建工廠,他根據數據,返回眾多可返回實例中的一個實例,然后在不用知道實例化的是那個子類的情況下,調用返回類的實例方法。

 

設計模式系列

歡迎加入左上方群,進行討論學習


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM