zoukankan      html  css  js  c++  java
  • 设计模式之简单工厂

    一、定义
    简单工厂其实不是一个设计模式,反而比较像是一种编程习惯。

    二、类图

    三、示例

    /// <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

    如若转载,请保留原文地址。谢谢合作。

  • 相关阅读:
    Android控件显示和隐藏
    Android Viewpager+Fragment实现滑动标签页
    Android中的color使用
    Android自定义Button按钮显示样式
    Android通过Intent传递对象
    Android中AsyncTask的使用
    iOS,推送通知
    UIWebView与JS的交互
    iOS蓝牙中的进制转换,数据格式转换
    Core Graphics 定制UIVIew 处理图片
  • 原文地址:https://www.cnblogs.com/dongyang/p/4106774.html