遊戲設計模式--工廠模式
阿新 • • 發佈:2019-02-03
/* 遊戲開發設計模式--簡單工廠模式 * 建立一個工廠(一個函式或一個類方法)來製造新的物件。 * 例項:生產手機,比如小米和蘋果各有生產手機的方法,客戶不要知道具體的生產 * 手機的方法,直接交給工廠來做,這樣可以降低耦合。 * 簡單工廠模式在更改需求的時候會違背開閉原則 * * */ using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class SimpleFactory : MonoBehaviour { void Start () { PhoneFactory factory = new PhoneFactory(); factory.Make(1).MakePhone(); } } /// <summary> /// 定義一個介面,宣告製造手機的方法 /// </summary> public class IPhone { public virtual void MakePhone() { } } /// <summary> /// 蘋果手機類 /// </summary> public class Apple : IPhone { public override void MakePhone() { Debug.Log("蘋果手機"); } } /// <summary> /// 小米手機類 /// </summary> public class MI : IPhone { public override void MakePhone() { Debug.Log("小米手機"); } } /// <summary> /// 簡單工廠類 /// </summary> public class PhoneFactory { public IPhone Make(int id) { switch (id) { case 1: return new Apple(); case 2: return new MI(); } return null; } }
/* 遊戲開發設計模式學習--工廠模式 * 例項:如前 * * */ using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class FactoryStudy : MonoBehaviour { void Start () { IFactory factory = new AppleFactory(); factory.Make().MakePhone(); } } /// <summary> /// 定義一個介面,宣告製造手機的方法 /// </summary> public interface IPhone { void MakePhone(); } /// <summary> /// 蘋果手機類 /// </summary> public class Apple : IPhone { public void MakePhone() { Debug.Log("蘋果手機"); } } /// <summary> /// 小米手機類 /// </summary> public class MI : IPhone { public void MakePhone() { Debug.Log("小米手機"); } } /// <summary> /// 工廠介面 /// </summary> public interface IFactory { IPhone Make(); } /// <summary> /// 生產蘋果手機類 /// </summary> public class AppleFactory : IFactory { public virtual IPhone Make() { Debug.Log("這裡是蘋果手機工廠"); return new Apple(); } } /// <summary> /// 生產小米手機類 /// </summary> public class MIFactory : IFactory { public virtual IPhone Make() { Debug.Log("這裡是小米手機工廠"); return new MI(); } }