zoukankan      html  css  js  c++  java
  • 设计模式学习总结(二)工厂模式

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

      一、示例展示:

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

      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

      二、工厂模式设计理念:

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

      三、角色及关系:

      

  • 相关阅读:
    读写锁机制原理
    jvm
    (WPF) 再议binding:点击User Control时,User Control变换颜色或做其他的处理。
    (WF)
    (C# ) 解析XML。
    (C#) 调用执行批处理文件
    (WPF, Service) 删除注册表中的USB Enum值.
    (C#) 文件操作
    (C#) Parse xml 时, 返回的node值总是null。
    (PowerShell) Managing Windows Registry
  • 原文地址:https://www.cnblogs.com/sccd/p/6569313.html
Copyright © 2011-2022 走看看