zoukankan      html  css  js  c++  java
  • 大话设计模式读书笔记--5.工厂方法模式

    生活中的例子:

    车有很多的品牌, 宝马,奔驰等, 制造汽车的工厂就是抽象出来的工厂, 而制造宝马汽车的工厂 ,就是具体的产品工厂,这就是工厂方法的应用场景

    定义

    工厂方法模式: 定义一个创建对象的接口, 让子类决定实例化哪一个类, 工厂方法使一个类的实例化延伸到了子类

    模式结构

    Creator:  抽象工厂, 声明工厂方法

    ConcreteCreator: 具体工厂,创建具体产品对象

    Product:抽象产品,声明产品共有的接口

    ConcreteProduct:具体产品

    模式实现

    <<简单工厂模式>>中说道, 工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,但是增加新的功能需要修改工厂类中额case分支条件,修改原有的类,违背了开闭原则

    下图是对简单工厂模式的结构改进

    把简单工厂类中的逻辑判断移到客户端, 当增加减法时,增加减法类和和减法工厂类,而不是修改原来的类

     下面是工厂方法的实现

    场景:雷锋帮助孤寡老人, 大学生帮助孤寡老人, 志愿者帮助孤寡老人

    场景分析:雷锋是可以抽象为 乐于帮助人的群体,大学生和志愿者是具体的群体

    下载代码,解压后目录如下图:

    优缺点

    优点:克服了简单工厂模式违背开闭原则,又保持了封装对象创建过程的优点

    缺点:每增加一个产品,就需要加一个产品工厂类,增加了额外的开发量

    使用场景

    一个类想要由自己的子类来定义某对象的创建过程。

  • 相关阅读:
    关于CString与VARIANT(CComVariant)之间的转化
    关于_T()说明
    关于COM组件调用
    关于ATML信号定义的理解-1
    关于DOM的事件操作
    javascript(二)
    javascript(一)
    进程.线程.协程之间的区别?
    CSS
    HTML 浅层漫谈
  • 原文地址:https://www.cnblogs.com/liuconglin/p/6405311.html
Copyright © 2011-2022 走看看