using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FactoryPattern1 : MonoBehaviour {
void Start() {
//我们开始正式定披萨了
NYStylePizzeStore nYStylePizzeStore = new NYStylePizzeStore();
nYStylePizzeStore.OrderPizza( PIZZETYPE.CHEESE);
ChicagoStylePizzeStore chicagoStylePizzeStore = new ChicagoStylePizzeStore();
chicagoStylePizzeStore.OrderPizza( PIZZETYPE.VEGGIE);
}
}
/*
抽象工厂模式
提供一个接口,用于创建相关或者依赖的家族,而不需要指明具体类。
依赖倒置原则
1、变量不可以持有具体类的引用
2、不要让类派生自具体类
3、不要覆盖基类中已实现的方法
*/
#region 运用依赖倒置原则的工厂模式
/// <summary>
/// 建造披萨原料工厂 接口
/// </summary>
public interface PizzaIngredientFactory {
Dough CreateDough();
Sauce CreateSauce();
Cheese CreateCheese();
Veggies[] CreateVeggies();
Pepperoni CreatePepperoni();
Clams CreateClam();
}
/// <summary>
/// 纽约披萨工厂
/// </summary>
public class NYPizzaIngredientFactory : PizzaIngredientFactory{
public Dough CreateDough(){
return new NYDough();
}
public Sauce CreateSauce(){
return new NYSauce();
}
public Cheese CreateCheese(){
return new NYCheese();
}
public Veggies[] CreateVeggies(){
Veggies[] veggies = { new NYVeggies(),new Onion(),new Garlic()};
return veggies;
}
public Pepperoni CreatePepperoni(){
return new NYPepperoni();
}
public Clams CreateClam(){
return new NYClams();
}
}
/// <summary>
/// 芝加哥披萨工厂
/// </summary>
public class ChicagoPizzaIngredientFactory : PizzaIngredientFactory {
public Dough CreateDough() {
return new ChicagoDough();
}
public Sauce CreateSauce() {
return new ChicagoSauce();
}
public Cheese CreateCheese() {
return new ChicagoCheese();
}
public Veggies[] CreateVeggies() {
Veggies[] veggies = { new ChicagoVeggies(), new Onion(), new Garlic() };
return veggies;
}
public Pepperoni CreatePepperoni() {
return new ChicagoPepperoni();
}
public Clams CreateClam() {
return new ChicagoClams();
}
}
/// <summary>
《Head First 设计模式》C#版:四、工厂模式之抽象工厂
最新推荐文章于 2019-08-19 20:46:32 发布