常用的案列介绍就是厨房做包子和馒头,这里的厨房就是我们工厂 ,我们每次只需要对厨房的窗口说给我一个馒头窗口就会给我们一个馒头,叫他们给我们一个包子就给我们一个包子。
第一:首先我们要定一个一个抽象工厂,然后工厂有一个方法输出方法
public abstract class Food { // 搞点面食,馒头,包子 public abstract void GetNoodle(); }
第二步就是实现工厂的生成方法,我是生成包子的还是生成馒头的
/// <summary> /// 包子 /// </summary> public class baozi : Food { public override void GetNoodle() { Console.WriteLine("包子一个!"); } } /// <summary> /// 馒头 /// </summary> public class mantou: Food { public override void GetNoodle() { Console.WriteLine("馒头一个"); } }
第三不,实现消费我是顾客我要一个包子或者馒头
public class FoodSimpleFactory { //这里就充当了厨房窗口 我要包子还是馒头。//说实话个人很少用到这种工厂模式 public static Food CreateFood(string type) { Food food = null; if (type.Equals("包子")) { food= new baozi(); } else if (type.Equals("馒头")) { food= new mantou(); } return food; } }
最后消费
class Customer { static void Main(string[] args) { // 客户想点包子 Food food1 = FoodSimpleFactory.CreateFood("包子"); food1.GetNoodle(); // 客户想点馒头 Food food2 = FoodSimpleFactory.CreateFood("馒头"); food2.GetNoodle(); Console.Read(); } }
.NET中System.Text.Encoding类就实现了简单工厂模式,该类中的GetEncoding(int codepage)就是工厂方法