简单工厂模式 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 //需求 抽象类Food 26 public abstract class Food 27 { 28 public abstract void Print(); 29 } 30 //原来的需求 具体类Tomatoes 31 public class Tomatoes : Food 32 { 33 public override void Print() 34 { 35 Console.WriteLine("番茄炒蛋!"); 36 } 37 } 38 //新增的需求 具体类Potatoes 39 public class Potatoes : Food 40 { 41 public override void Print() 42 { 43 Console.WriteLine("土豆肉丝!"); 44 } 45 } 46 //程序调用入口(Main方法) 47 class Program 48 { 49 static void Main(string[] args) 50 { 51 //原来的需求 52 SimpleFactory.Cook("番茄炒蛋").Print(); 53 //新增的需求 54 SimpleFactory.Cook("土豆肉丝").Print(); 55 Console.ReadKey(); 56 } 57 }
应用场景:
当工厂类负责创建的对象比较少时可以考虑使用简单工厂模式;
客户如果只知道传入工厂类的参数,对于如何创建对象的逻辑不关心时可以考虑使用简单工厂模式。