一、定义
简单工厂其实不是一个设计模式,反而比较像是一种编程习惯。
二、类图
三、示例
/// <summary> /// 披萨商店 /// </summary> public class PizzaStore { public PizzaStore() { } public Pizza OrderPizza(string type) { Pizza pizza; pizza = SimplePizzaFactory.CreatePizza(type); pizza.Prepare(); pizza.Bake(); pizza.Cut(); pizza.Box(); return pizza; } } /// <summary> /// 披萨工厂 /// </summary> public static class SimplePizzaFactory { public static Pizza CreatePizza(string type) { Pizza pizza = null; if (type.Equals("cheese")) { pizza = new CheesePizza(); } else if (type.Equals("pepperoni")) { pizza = new PepperoniPizza(); } return pizza; } } /// <summary> /// 抽象披萨 /// </summary> public abstract class Pizza { public abstract void Prepare(); public abstract void Bake(); public abstract void Cut(); public abstract void Box(); } /// <summary> /// 芝士披萨 /// </summary> public class CheesePizza:Pizza { public override void Prepare() { Console.WriteLine("准备芝士披萨"); } public override void Bake() { Console.WriteLine("烘培芝士披萨"); } public override void Cut() { Console.WriteLine("切芝士披萨"); } public override void Box() { Console.WriteLine("打包芝士披萨"); } } /// <summary> /// 意大利香肠披萨 /// </summary> public class PepperoniPizza:Pizza { public override void Prepare() { Console.WriteLine("准备意大利香肠披萨"); } public override void Bake() { Console.WriteLine("烘培意大利香肠披萨"); } public override void Cut() { Console.WriteLine("切意大利香肠披萨"); } public override void Box() { Console.WriteLine("打包意大利香肠披萨"); } } static void Main(string[] args) { PizzaStore pizzaStore = new PizzaStore(); Pizza pizza = pizzaStore.OrderPizza("cheese"); Console.ReadLine(); }
源码下载
转载请注明来自:闪闪的幸运星
原文地址:http://www.cnblogs.com/dongyang
如若转载,请保留原文地址。谢谢合作。