zoukankan      html  css  js  c++  java
  • 设计模式之笔记--工厂方法模式(Factory Method)

    工厂方法模式(Factory Method)

    定义

           工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

    类图

    描述

    Product,抽象产品类,可以派生多个具体产品类;
    Factory,抽象工厂类,可以派生多个具体工厂类;
    每个具体工厂只能创建一个具体产品。

    应用场景

          汽车的种类有奥迪、奔驰等,汽车厂的种类有奥迪汽车厂、奔驰汽车厂等,每种汽车厂负责生产各自的汽车。

        /// <summary>
        /// 汽车接口
        /// </summary>
        public interface ICar
        {
            void Print();
        }
    
        /// <summary>
        /// 奥迪
        /// </summary>
        public class Audi : ICar
        {
            public void Print()
            {
                Console.WriteLine("这是一辆奥迪车.");
            }
        }
    
        /// <summary>
        /// 奔驰
        /// </summary>
        public class Benz : ICar
        {
            public void Print()
            {
                Console.WriteLine("这是一辆奔驰车.");
            }
        }
    
        /// <summary>
        /// 汽车工厂接口
        /// </summary>
        public interface ICarFactory
        {
            ICar CreateCar();
        }
    
        /// <summary>
        /// 具体的奥迪工厂类
        /// </summary>
        public class AudiFactory : ICarFactory
        {
            /// <summary>
            /// 生产汽车
            /// </summary>
            /// <returns></returns>
            public ICar CreateCar()
            {
                return new Audi();
            }
        }
    
        /// <summary>
        /// 具体的奔驰工厂类
        /// </summary>
        public class BenzFactory : ICarFactory
        {
            /// <summary>
            /// 生产汽车
            /// </summary>
            /// <returns></returns>
            public ICar CreateCar()
            {
                return new Benz();
            }
        } 
  • 相关阅读:
    MVVM
    vue-cli初始化项目2.x|3.x
    逻辑覆盖
    white box白盒测试
    black box黑盒测试
    总结回顾js arr的常见方法以及相关的使用场景(一)
    js 原生功底 (一)
    markdown 语法总结(一)
    阿里一面,面试官想看到的究竟是什么,带你揭秘!!!!
    关于Axios 源码你想了解的 在这儿
  • 原文地址:https://www.cnblogs.com/zhou-yi/p/5314537.html
Copyright © 2011-2022 走看看