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();
            }
        } 
  • 相关阅读:
    [笔记]--Sublime Text 配置及使用技巧
    [笔记]--Oracle 10g在Windows 32位系统使用2G以上内存
    [笔记]--Ubuntu安装Sublime Text 2
    [笔记]--Oracle修改SGA大小
    [转载]--Ubuntu下修改DNS重启也能用的方法
    [转载]--用Python 自动安装软件
    谈谈-EventBus的使用
    谈谈-ListView的优化
    谈谈-View的事件分发机制
    谈谈-ScrollView嵌套ListView
  • 原文地址:https://www.cnblogs.com/zhou-yi/p/5314537.html
Copyright © 2011-2022 走看看