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

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

  • 相关阅读:
    教你如何上传项目到GitHub
    Spring Boot日志使用
    Github库名命名规范
    failed to resolve org.junit.platform
    SecureCRT 关键字高亮显示
    curl 命令
    idea中展开折叠的文件夹
    python官网打不开
    小工具下载地址汇总
    Navicat12 for Mysql激活
  • 原文地址:https://www.cnblogs.com/dongyang/p/4106774.html
Copyright © 2011-2022 走看看