-
工厂方法模式
工厂方法是简单工厂的进一步的延伸,也可以说是抽象工厂的一个特例,解决了简单工厂违反“开发-封闭”原则问题,把工厂抽象出一个类,只不过只有一个产品;
-
适用性
1)当一个类不知道它所必须创建的对象的类的时候。
2)当一个类希望由它的子类来指定它所创建的对象的时候。 -
举例
如哈佛汽车加工厂既可以生产跑车又可以生产卡车。
-
UML类图

-
代码示例
- 定义哈佛汽车接口(或抽象类)
package com.jin.demo.DesignPatterns.Factory.FactoryMethod; /** * 定义哈佛汽车接口(或抽象类) * @auther jinsx * @date 2019-05-15 08:58 */ public interface HFCar { // 什么汽车都可以跑 void run(); } - 哈佛跑车
package com.jin.demo.DesignPatterns.Factory.FactoryMethod; /** * 哈佛跑车 * @auther jinsx * @date 2019-05-15 09:00 */ public class HFRoadster implements HFCar{ @Override public void run() { System.out.println("哈佛小跑车,起步就是快"); } } - 哈佛卡车
package com.jin.demo.DesignPatterns.Factory.FactoryMethod; /** * 哈佛卡车 * @auther jinsx * @date 2019-05-15 09:03 */ public class HFTruck implements HFCar { @Override public void run() { System.out.println("哈佛小卡车,运输能力就是强"); } } - 声明工厂方法接口(或抽象类)
package com.jin.demo.DesignPatterns.Factory.FactoryMethod; /** * 工厂方法接口(或抽象类) * @auther jinsx * @date 2019-05-15 10:00 */ public interface CarFactoryMethod { HFCar createHFCar(); } - 跑车工厂
package com.jin.demo.DesignPatterns.Factory.FactoryMethod; /** * 跑车工厂 * @auther jinsx * @date 2019-05-15 10:02 */ public class RoadsterFactory implements CarFactoryMethod { // 哈佛跑车 @Override public HFCar createHFCar() { return new HFRoadster(); } } - 卡车工厂
package com.jin.demo.DesignPatterns.Factory.FactoryMethod; /** * 卡车工厂 * @auther jinsx * @date 2019-05-15 10:05 */ public class TruckFactory implements CarFactoryMethod { // 哈佛卡车 @Override public HFCar createHFCar() { return new HFTruck(); } } - 测试类
package com.jin.demo.DesignPatterns.Factory.FactoryMethod; /** * 测试类 * @auther jinsx * @date 2019-05-15 09:15 */ public class TestFactoryMethod { public static void main(String[] args) { // 来一个哈佛小跑 CarFactoryMethod r = new RoadsterFactory(); HFCar rCar = r.createHFCar(); rCar.run(); // 来一个哈佛小卡 CarFactoryMethod t = new TruckFactory(); HFCar tCar = t.createHFCar(); tCar.run(); } } - 执行测试结果
哈佛小跑车,起步就是快 哈佛小卡车,运输能力就是强
- 定义哈佛汽车接口(或抽象类)
-
点击Java之23种设计模式查看更多的设计模式
Java设计模式之工厂方法模式
最新推荐文章于 2025-10-17 10:18:55 发布
本文深入解析工厂方法模式,一种设计模式,用于解决类在不知道所需创建对象的具体类时的问题。通过实例展示了如何使用该模式创建不同类型的哈佛汽车,包括跑车和卡车,遵循开闭原则。

1332

被折叠的 条评论
为什么被折叠?



