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

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

  • 相关阅读:
    redis的数据类型与应用场景(二)
    redis的安装与配置(一)
    Spring Security教程 ---- 验证码功能的实现
    Java类文件结构
    实体字符
    前端安全之XSS攻击
    $_SERVER[]数组解析
    php主要用于哪几方面
    集群与分布式概念
    python操作mongodb实例
  • 原文地址:https://www.cnblogs.com/dongyang/p/4106774.html
Copyright © 2011-2022 走看看