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


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

      一、示例展示:

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

      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

      二、工厂模式设计理念:

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

      三、角色及关系:

      

  • 相关阅读:
    oracle将blob转为varchar2
    根据给定年份和周数获取指定周的开始结束日期
    获取指定月份的第一个周五
    找回误删的表和数据
    oracle大数据库
    Java数据库编程
    流的使用
    (转)支持 PS/2 与 USB 的键盘过滤驱动(可卸载)
    Unity编辑器扩展-Custom List, displaying data your way
    值得推荐的C/C++框架和库 (真的很强大)〔转〕
  • 原文地址:https://www.cnblogs.com/sccd/p/6569313.html
Copyright © 2020-2023  润新知