同简单工厂模式相比,工厂模式的使用更加复杂,但使用范围却更加的广泛!
一、示例展示:
通过学习及总结,以下是我做的一个工厂模式的示例:
1. 定义抽象工厂角色
//Abstract Factory public abstract class Creator { public abstract Car CarFactory(); }
2. 定义具体工厂角色
//Concrete Factory public class BuickCreator : Creator { public override Car CarFactory() { return new Buick(); } } //Concrete Factory public class CadillacCreator : Creator { public override Car CarFactory() { return new Cadillac(); } } //Concrete Factory public class ChevroletCreator : Creator { public override Car CarFactory() { return new Chevrolet(); } }
3. 定义抽象产品角色:
//Abstract Product role(抽象产品) public abstract class Car { public abstract void Run(); }
4. 定义具体产品角色
//Concrete product(具体产品角色) public class Buick : Car { public override void Run() { Console.WriteLine("I am buick!"); } } //Concrete product(具体产品角色) public class Cadillac : Car { public override void Run() { Console.WriteLine("I am cardillac!"); } } //Concrete product(具体产品角色) public class Chevrolet : Car { public override void Run() { Console.WriteLine("I am chevrolet!"); } }
5. 创建客户端调用
static void Main(string[] args) { //1. 利用多态生成工厂对象 Creator cr1 = new BuickCreator(); Creator cr2 = new CadillacCreator(); Creator cr3 = new ChevroletCreator(); //2. 根据工厂对象生成具体的产品类 Car bk = cr1.CarFactory(); Car dl = cr2.CarFactory(); Car cl = cr3.CarFactory(); //3. 调用产品类中的方法 bk.Run(); dl.Run(); cl.Run(); Console.ReadLine(); }
二、工厂模式设计理念:
把产品和工厂都进行高度概括,即抽象为接口。利用多态生成具体的工厂对象,通过调用具体工厂对象中来创建具体的产品类;
三、角色及关系: