工厂模式

汽车及测试程序的演化过程
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为什么不用普通类来实现?

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

原文地址:https://www.cnblogs.com/vipcjob/p/1540601.html