zoukankan      html  css  js  c++  java
  • 工厂模式

    汽车及测试程序的演化过程
    Part 1:

    Code

    Part 2:
    问题:CarTestFramework只能测试一种Car。
    思路:把Car变成抽象类

    Code

    Part 3:
    问题:方法里只能有固定的几个car,当需要传递的car个数不一定时会出现问题
    思路:传递工厂类去创建对象

    Code

    Part 4:
    问题:CarFactory和HongqiCar相互依赖(只能对应HongqiCar)
    思路:抽象工厂CarFactory

    Code

    Factory Method模式的几个要点
     Factory Method模式主要用于隔离类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的具体类型,紧耦合关系会导致软件的脆弱。
     Factory Method模式通过面向对象的手法,将所要创建的具体对象工作延迟到子类,从而实现一种扩展(而非更改)的策略,较好地解决了这种紧耦合关系。
     Factory Method模式解决“单个对象”的需求变化,Abstract Factory 模式解决“系列对象”的需求变化,Builder模式解决“对象部分”的需求变化。

    PS:以下个人观点:

    为什么要用抽象类?上述的AbstractCar为什么不用普通类来实现?

    因为将一个类声明为抽象类,可以确保它的子类一定是在完成所有功能之后才能实例化(如果没有实现抽象类的方法,子类也必须声明为抽象类,而抽象类是不能实例化的)。如果用普通类,子类功能没有实现时也能实例化来使用,相当于交给用户一个未完成的零部件,这是应该避免的。

  • 相关阅读:
    协程-Greenlet
    协程简介-异步IO
    关于__name__=='__main__
    进程池-限制同一时间在CPU上运行的进程数
    STM32丰富的资料网站(库函数手册)
    STM32CubeMX入门之点亮板载LED
    STM32CUBEMX忘记配置sys中的debug导致程序只能下载一次的问题
    GX Works2 存储器空间或桌面堆栈不足 解决方案
    Lua安装报错:编译 Lua 报错:error: readline/readline.h: No such file or directory 问题解决办法
    Ubuntu18.04不能联网问题
  • 原文地址:https://www.cnblogs.com/vipcjob/p/1540601.html
Copyright © 2011-2022 走看看