欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > JAVA设计模式——(十)抽象工厂模式(Abstract Factory Pattern)

JAVA设计模式——(十)抽象工厂模式(Abstract Factory Pattern)

2025/6/21 13:36:32 来源:https://blog.csdn.net/weixin_45248370/article/details/147701261  浏览:    关键词:JAVA设计模式——(十)抽象工厂模式(Abstract Factory Pattern)

JAVA设计模式——(十)抽象工厂模式(Abstract Factory Pattern)

  • 介绍
  • 理解
  • 实现
    • 工厂接口
    • 工厂实现类
    • 应用类
    • 应用类实现
    • 测试
    • 改造工厂类
  • 应用

介绍

抽象工厂模式在工厂模式的基础上,适配的对象变为一组相关的对象,为这一组对象提供一个接口。

理解

好比一个手机,提供了很多个app的入口,想使用哪个,就点开哪个,那工厂类也替我们完成这样的工作,而不必过多关心找不到使用应用的入口。

实现

工厂接口

package cn.sh.designepattern.example01;/*** @Author song* @Version 0.0.1* @Date 2025/5/4 17:06* @Contact 643947568@qq.com*/
public interface ApplicationFactory {public Application1 createApplication1();public Application2 createApplication2();
}

工厂实现类

package cn.sh.designepattern.example01;/*** @Author song* @Version 0.0.1* @Date 2025/5/4 17:06* @Contact 643947568@qq.com*/
public class ActualApplicationFactory implements ApplicationFactory {@Overridepublic Application1 createApplication1() {return new Application1();}@Overridepublic Application2 createApplication2() {return new Application2();}
}

应用类

package cn.sh.designepattern.example01;/*** @Author song* @Version 0.0.1* @Date 2025/5/4 17:03* @Contact 643947568@qq.com*/
public interface Application {public void enterApplication();public void executeApplication();public void exitApplication();
}

应用类实现

两个子类

package cn.sh.designepattern.example01;/*** @Author song* @Version 0.0.1* @Date 2025/5/4 17:04* @Contact 643947568@qq.com*/
public class Application1 implements Application {@Overridepublic void enterApplication() {System.out.println("进入应用1");}@Overridepublic void executeApplication() {System.out.println("执行应用1");}@Overridepublic void exitApplication() {System.out.println("退出应用1");}
}
package cn.sh.designepattern.example01;/*** @Author song* @Version 0.0.1* @Date 2025/5/4 17:04* @Contact 643947568@qq.com*/
public class Application2 implements Application {@Overridepublic void enterApplication() {System.out.println("进入应用1");}@Overridepublic void executeApplication() {System.out.println("执行应用1");}@Overridepublic void exitApplication() {System.out.println("退出应用1");}
}

测试

如下代码,创建工厂类。然后从工厂类决定创建哪个Application子类的实例。

package cn.sh.designepattern.example01;/*** @Author song* @Version 0.0.1* @Date 2025/4/29 11:45* @Contact 643947568@qq.com*/
public class Main {public static void main(String[] args) {ApplicationFactory actualApplicationFactory = new ActualApplicationFactory();Application1 application1 = actualApplicationFactory.createApplication1();Application2 application2 = actualApplicationFactory.createApplication2();application1.enterApplication();application1.executeApplication();application1.exitApplication();application2.enterApplication();application2.executeApplication();application2.exitApplication();}
}

改造工厂类

可以采用泛型改造工厂类,使用反射创建,减少代码的冗余,具体可见工厂模式中的实现。

应用

对于多个对象,他们之间的存在着共通的实现逻辑,就好比手机的app,都需要我们在手机打开一样,而不用关心底层的实现逻辑,即使换了一个操作系统,苹果手机上也只需要更换一套工厂类,处理不同的系统信息。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词