设计模式学习总结(二)工厂模式

   同简单工厂模式相比,工厂模式的使用更加复杂,但使用范围却更加的广泛!

  一、示例展示:

  通过学习及总结,以下是我做的一个工厂模式的示例:

  1. 定义抽象工厂角色

//Abstract Factory
public abstract class Creator
{
    public abstract Car CarFactory();
}
View Code

  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();
    }
}
View Code

  3. 定义抽象产品角色:

//Abstract Product role(抽象产品)
public abstract class Car
{
    public abstract void Run();
}
View Code

  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!");
    }
}
View Code

  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();
}
View Code

  二、工厂模式设计理念:

  把产品和工厂都进行高度概括,即抽象为接口。利用多态生成具体的工厂对象,通过调用具体工厂对象中来创建具体的产品类;

  三、角色及关系:

  

原文地址:https://www.cnblogs.com/sccd/p/6569313.html