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();
            }
        } 
  • 相关阅读:
    Servlet接口实现类开发步骤
    Servlet概述
    Web服务器之HTTP协议与Tomcat服务器
    vant中van-picker选项插入图片
    排序算法-插入排序
    排序算法-快速排序
    排序算法-冒泡排序
    浅谈C#中Dictionary的实现。
    设计模式(23)-备忘录模式
    设计模式(22)-访问者模式
  • 原文地址:https://www.cnblogs.com/zhou-yi/p/5314537.html
Copyright © 2011-2022 走看看