转自:《Java 设计模式》2009年( 耿祥义 张跃平 著)
一,概括:
工厂方法模式(别名:虚拟构造)
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。
二,引入
得到一个类的子类的实例最常用的办法使使用 new 运算符和 该子类的构造方法,但是在通常情况下系统不允许用户代码和该类的子类形成耦合或者用户不知道该类有哪些子类可用,比如有一个 抽象的 Car类,该类有两个子类 ,Porsche类 和 QQCar类,而系统希望用户用 Factory类的子类的实例 来得到 Car类 的子类的实例。
为此,在设计 Factory类时,决定让它依赖于 Car类,并且提供了一个返回 Car 对象的 方法,比如:
public Car createCar();
但是,Factory类本身并不知道用户需要哪种车,即不知道 Car类 的哪个子类的实例,因此需要将 createCae()方法 设置为 抽象方法,于是自然而然的 Factory类 也要为抽象类。我们可以让其子类重写 createCar()方法,分别返回 Porsche类 和 QQCar类 的实例。于aa
原文:https://www.cnblogs.com/asdfknjhu/p/13951683.html