简单工厂模式 SimpleFactory
简单工厂模式又叫静态方法模式(因为工厂类定义了一个静态方法),由一个工厂类根据传入的参数决定创建出哪一种产品类的实例,但不在“四人帮”的23种设计模式之中。
把经常改变需求的部分封装到一个类中达到降低对象之间的耦合度的目的。
1 //将需求经常改变的部分封装到简单工厂类SimpleFactory中 2 public class SimpleFactory 3 { 4 //定义根据需要type返回指定Food对象的静态方法Cook 5 public static Food Cook(string type) 6 { 7 //定义要返回的对象并赋值为null 8 Food food = null; 9 //需求经常改变的部分10 switch (type)11 {12 //原来的需求13 case "番茄炒蛋":14 food = new Tomatoes();15 break;16 //新增的需求17 case "土豆肉丝":18 food = new Potatoes();19 break;20 }21 //返回目标对象22 return food;23 }24 }25 //需求 抽象类Food26 public abstract class Food27 {28 public abstract void Print();29 }30 //原来的需求 具体类Tomatoes31 public class Tomatoes : Food32 {33 public override void Print()34 {35 Console.WriteLine("番茄炒蛋!");36 }37 }38 //新增的需求 具体类Potatoes39 public class Potatoes : Food40 {41 public override void Print()42 {43 Console.WriteLine("土豆肉丝!");44 }45 }46 //程序调用入口(Main方法)47 class Program48 {49 static void Main(string[] args)50 {51 //原来的需求52 SimpleFactory.Cook("番茄炒蛋").Print();53 //新增的需求54 SimpleFactory.Cook("土豆肉丝").Print();55 Console.ReadKey();56 }57 }
应用场景:
当工厂类负责创建的对象比较少时可以考虑使用简单工厂模式;
客户如果只知道传入工厂类的参数,对于如何创建对象的逻辑不关心时可以考虑使用简单工厂模式。