/* 游戏开发设计模式--简单工厂模式 * 建立一个工厂(一个函数或一个类方法)来制造新的对象。 * 实例:生产手机,比如小米和苹果各有生产手机的方法,客户不要知道具体的生产 * 手机的方法,直接交给工厂来做,这样可以降低耦合。 * 简单工厂模式在更改需求的时候会违背开闭原则 * * */ 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(); } }