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

      二、工厂模式设计理念:

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

      三、角色及关系:

      

  • 相关阅读:
    html_py
    PHP-FPM详解
    nginx 虚拟主机配置
    正确配置Nginx+PHP
    centos7安装Nginx
    如何让浏览器关闭后session失效
    微擎中消息响应回复 代码流程
    在vue组件库中不能使用v-for
    微信分享前面
    php接受axios数据
  • 原文地址:https://www.cnblogs.com/sccd/p/6569313.html
Copyright © 2011-2022 走看看