• 大话设计模式读书笔记--5.工厂方法模式


    生活中的例子:

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

    定义

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

    模式结构

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

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

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

    ConcreteProduct:具体产品

    模式实现

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

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

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

     下面是工厂方法的实现

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

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

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

    优缺点

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

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

    使用场景

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

  • 相关阅读:
    H3c实验室-(OSPF,Nat,STP,Dhcp,Acl)v.1)
    武科WUST-CTF2020“Tiki组 ”
    MRCTF 2020-“TiKi小组”
    mybatis-sqlite日期类型对应关系
    docker安装postgresql
    docker常用命令
    java sqlite docker,sqlite出错
    jenkins之SSH Publishers环境变量
    线程池(6)-submit与execute区别
    线程池(5)-停止线程池里的任务
  • 原文地址:https://www.cnblogs.com/liuconglin/p/6405311.html
Copyright © 2020-2023  润新知