码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之简单工厂

时间:2014-11-19 00:09:14      阅读:294      评论:0      收藏:0      [点我收藏+]

标签:blog   http   ar   on   2014   log   bs   ad   ef   

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

二、类图

bubuko.com,布布扣

三、示例

/// <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();
}

源码下载

设计模式之简单工厂

标签:blog   http   ar   on   2014   log   bs   ad   ef   

原文地址:http://www.cnblogs.com/dongyang/p/4106774.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!