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();
            }
        } 
  • 相关阅读:
    谈谈严格模式
    javascript回调函数那些事~
    border-radius:50%和100%究竟有什么区别
    canvas浅谈 实现简单的自旋转下落
    js中关于this的理解
    对js 面对对象编程的一些简单的理解
    ios中 input 焦点光标不垂直居中
    只能输入数字的正则表达式在火狐的兼容问题解决方法
    关于margin、padding 对内联元素的影响
    element ui 表格的合并
  • 原文地址:https://www.cnblogs.com/zhou-yi/p/5314537.html
Copyright © 2011-2022 走看看