C#--设计模式之简单工厂模式
2016-09-23 10:21
239 查看
简单工厂设计模式:负责生产对象的一个类;
实现方式(应用场景):我们平常编程中,当使用“new”关键字创建一个对象时,此时该对象就依赖与这个对象,也就是他们之间的耦合度高,当需求变化时,我们就不得不去修改此类源码,此时我们可以运用面向对象(OO)的很重要的原则去解决这一问题,该原则就是--封装改变,既然要封装改变,自然也就要找到改变的代码,然后把改变的代码用来封装,这样的一种思路也就是我们简单工厂的实现方式
运行结果:
上菜:
private void btnSF_Click(object sender, EventArgs e)
{
//做西红柿炒蛋
Food food1 = Customer.Cook("西红柿炒蛋");
food1.Print();
//做土豆肉丝
Food food2 = Customer.Cook("土豆肉丝");
food2.Print();
}
}
/// <summary>
/// 自己做饭的情况
/// 没有简单工厂之前,客户想吃什么菜只能自己炒的
/// </summary>
public class Customer
{
/// <summary>
/// 烧菜方法
/// </summary>
/// <returns></returns>
public static Food Cook(string type)
{
Food food = null;
//客户A说:我想吃西红柿炒蛋怎么办;
//客户B说:那你就自己烧啊;
//客户A说:好啊,那就自己做把
if (type.Equals("西红柿炒蛋"))
{
food = new TomatoScrambledEggs();
}
if (type.Equals("土豆肉丝"))
{
food = new ShreddedPorkWithPotatoes();
}
return food;
}
}
/// <summary>
/// 菜抽象类
/// </summary>
public abstract class Food
{
//输出了些什么菜
public abstract void Print();
}
/// <summary>
/// 西红柿炒蛋这道菜
/// </summary>
public class TomatoScrambledEggs : Food
{
public override void Print()
{
MessageBox.Show("一份西红柿炒蛋");
}
}
/// <summary>
/// 土豆肉丝这道菜
/// </summary>
public class ShreddedPorkWithPotatoes : Food
{
public override void Print()
{
MessageBox.Show("一份土豆肉丝");
}
}
}
实现方式(应用场景):我们平常编程中,当使用“new”关键字创建一个对象时,此时该对象就依赖与这个对象,也就是他们之间的耦合度高,当需求变化时,我们就不得不去修改此类源码,此时我们可以运用面向对象(OO)的很重要的原则去解决这一问题,该原则就是--封装改变,既然要封装改变,自然也就要找到改变的代码,然后把改变的代码用来封装,这样的一种思路也就是我们简单工厂的实现方式
运行结果:
上菜:
private void btnSF_Click(object sender, EventArgs e)
{
//做西红柿炒蛋
Food food1 = Customer.Cook("西红柿炒蛋");
food1.Print();
//做土豆肉丝
Food food2 = Customer.Cook("土豆肉丝");
food2.Print();
}
}
/// <summary>
/// 自己做饭的情况
/// 没有简单工厂之前,客户想吃什么菜只能自己炒的
/// </summary>
public class Customer
{
/// <summary>
/// 烧菜方法
/// </summary>
/// <returns></returns>
public static Food Cook(string type)
{
Food food = null;
//客户A说:我想吃西红柿炒蛋怎么办;
//客户B说:那你就自己烧啊;
//客户A说:好啊,那就自己做把
if (type.Equals("西红柿炒蛋"))
{
food = new TomatoScrambledEggs();
}
if (type.Equals("土豆肉丝"))
{
food = new ShreddedPorkWithPotatoes();
}
return food;
}
}
/// <summary>
/// 菜抽象类
/// </summary>
public abstract class Food
{
//输出了些什么菜
public abstract void Print();
}
/// <summary>
/// 西红柿炒蛋这道菜
/// </summary>
public class TomatoScrambledEggs : Food
{
public override void Print()
{
MessageBox.Show("一份西红柿炒蛋");
}
}
/// <summary>
/// 土豆肉丝这道菜
/// </summary>
public class ShreddedPorkWithPotatoes : Food
{
public override void Print()
{
MessageBox.Show("一份土豆肉丝");
}
}
}
相关文章推荐
- C#设计模式学习笔记---简单工厂模式
- C#设计模式之简单工厂篇
- 用 Delphi 学设计模式 之 简单工厂篇- -
- 设计模式 之 简单工厂
- JAVA设计模式——简单工厂(Simple Factory)模式
- .NET设计模式(1): 简单工厂模式
- C#设计模式之简单工厂篇
- 设计模式之-简单工厂、工厂方法、抽象工厂
- C#设计模式之简单工厂篇
- 第一个设计模式:简单工厂
- 最简单的工厂设计模式 Factory
- [导入]C#设计模式之简单工厂篇
- C#设计模式之简单工厂
- 简单工厂设计模式-设计模式(1)
- 设计模式之Factory1(简单工厂,工厂方法,抽象工厂的比较)
- C#设计模式之简单工厂篇
- C#设计模式之简单工厂篇
- Dot Net 设计模式—简单工厂
- 简单工厂设计模式
- 设计模式-工厂模式-简单工厂