工厂模式 Java实现
发布日期:2021-05-27 02:41:41 浏览次数:22 分类:精选文章

本文共 1799 字,大约阅读时间需要 5 分钟。

一、产生背景

在软件工程中,过度使用new关键字创建对象会导致代码难以维护和扩展。尤其是在大型项目中,修改时可能会“牵一发而动全身”,这与面向对象的基本原则不符。通过引入工程模式,将代码细节封装起来,对外仅暴露关键部分,可以实现面向对象的需求。工厂模式通过将重复部分封装为接口,解决了多个对象创建的统一管理问题。

二、工程简览

本工程包括以下部分:

  • FlightFactory.java:工程模式的核心,用于获取战斗机对象的关键获取方式。
  • Flight.java:战斗机接口,定义了所有战斗机必须实现的抽象方法fire()
  • J10.java, J11.java等:具体实现类,每个类都实现了Flight接口,并重写了fire()方法,实现了独特的开火行为。
  • FactoryProduce.java:测试生产类,负责模拟战斗机的实例化与使用。

三、实现

Flight.java

public interface Flight {    public void fire();}

FlightFactory.java

public class FlightFactory {    public Flight getFlight(String type) {        switch (type) {            case "J20": return new J20();            case "J11": return new J11();            case "J10": return new J10();            case "F16": return new F16();            case "F35": return new F35();            case "F22": return new F22();            default: return null;        }    }}

J10.java

public class J10 implements Flight {    @Override    public void fire() {        System.out.println("J10 开火了...");    }}

其余战斗机类(如J11.java等)结构类似,主要区别在于fire()方法内的打印内容。

FactoryProduce.java

public class FactoryProduce {    public static void main(String[] args) {        FlightFactory factory = new FlightFactory();        Flight j20 = factory.getFlight("J20");        j20.fire();        Flight j11 = factory.getFlight("J11");        j11.fire();        Flight j10 = factory.getFlight("J10");        j10.fire();        Flight f22 = factory.getFlight("F22");        f22.fire();        Flight f35 = factory.getFlight("F35");        f35.fire();        Flight f16 = factory.getFlight("F16");        f16.fire();    }}

操作结果

运行FactoryProduce.java后,输出如下:

J20 开火了... J11 开火了... J10 开火了... F22 开火了... F35 开火了... F16 开火了...

这种设计模式通过将对象创建逻辑封装起来,简化了代码结构,提高了可维护性。每个具体实现类只需要实现接口中的抽象方法,而不用关心对象的创建细节。通过使用工厂模式,可以统一管理多种对象的创建过程,即使在未来扩展新的战斗机类型时,也只需要添加相应的实现类和对应的工厂方法判断即可。

上一篇:工厂模式 Swift简单实现
下一篇:WebView 拦截广告 简单实现

发表评论

最新留言

不错!
[***.144.177.141]2025年04月20日 20时31分03秒