厂方法与简单工厂最大的区别,在于工厂方法将工厂进行了抽象,将实现逻辑延迟到工厂的子类。
using UnityEngine;
// 食物抽象类
public abstract class Food
{
public abstract void MenuFood();
}
// 西红柿炒鸡蛋这道菜
public class Tomato:Food
{
public override void MenuFood()
{
Debug.Log("西红柿菜");
}
}
//辣椒炒饭
public class Pepper : Food
{
public override void MenuFood()
{
Debug.Log("辣椒炒饭");
}
}
// 抽象工厂类
public abstract class FoodFactory
{
public abstract Food CreateFoodFactory();
}
// 西红柿工厂类
public class TomatoFactory:FoodFactory
{
public override Food CreateFoodFactory()
{
return new Tomato();
}
}
//辣椒炒饭工厂类
public class PepperFactory : FoodFactory
{
public override Food CreateFoodFactory()
{
return new Pepper();
}
}
// 客户端调用
using UnityEngine;
public class Client : MonoBehaviour
{
void Start ()
{
// 初始化做菜的两个工厂()
FoodFactory tomatoFactory = new TomatoFactory();
FoodFactory pepperFactory = new PepperFactory();
// 开始做西红柿
Food tomato = tomatoFactory.CreateFoodFactory();
tomato.MenuFood();
//开始做辣椒炒饭
Food pepper = pepperFactory.CreateFoodFactory();
pepper.MenuFood();
}
}