iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >JAVA抽象工厂模式是什么及怎么实现
  • 143
分享到

JAVA抽象工厂模式是什么及怎么实现

2023-06-30 06:06:41 143人浏览 独家记忆
摘要

这篇文章主要讲解了“JAVA抽象工厂模式是什么及怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JAVA抽象工厂模式是什么及怎么实现”吧!什么是抽象工厂模式抽象工厂(AbstractF

这篇文章主要讲解了“JAVA抽象工厂模式是什么及怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JAVA抽象工厂模式是什么及怎么实现”吧!

JAVA抽象工厂模式是什么及怎么实现

什么是抽象工厂模式

抽象工厂(AbstractFactory)模式的定义: 是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。

满足条件:

  • 系统中有多个产品族,每个具体工厂创建同一族但属于不同等级结构的产品。

  • 系统一次只可能消费其中某一族产品,即同族的产品一起使用。

优点:

  • 可以在类的内部对产品族中相关联的多等级产品共同管理,而不必专门引入多个新的类来进行管理。

  • 当需要产品族时,抽象工厂可以保证客户端始终只使用同一个产品的产品组。

  • 抽象工厂增强了程序的可扩展性,当增加一个新的产品族时,不需要修改原代码,满足开闭原则。

缺点:

  • 当产品族中需要增加一个新的产品时,所有的工厂类都需要进行修改。增加了系统的抽象性和理解难度。

抽象工厂的实现

案例的主要角色如下:
抽象工厂(Abstract Factory): 七侠传承
工厂(SimpleFactory): 师傅、师娘
抽象产品(Product): 天外陨石(铸剑的原材料)、一窝灵鸽蛋(未孵化的灵鸽)
具体产品(ConcreteProduct): 七剑。七只灵鸽

案例:
师傅拥有七侠传承,会打造至阳之剑和培养雄性小灵鸽。
师娘拥有七侠传承,会打造至阴之剑和培养雌性小灵鸽。
七侠找师傅师娘打造自己的剑和领养自己的小灵鸽。

抽象产品、产品

S1接口(天外陨石):

接口内声明了一个方法

public interface S1 {    void show();}

S2接口(一窝灵鸽蛋):

接口内声明了一个方法

public interface S2 {    void show();}

A1类实现接口S1(长虹剑):

实现S1接口

public class A1 implements S1 {    @Override    public void show() {        System.out.println("打造了一把长虹剑");    }}

B1类实现接口S1(冰魄剑):

实现S1接口

public class B1 implements S1 {    @Override    public void show() {        System.out.println("打造了一把冰魄剑");    }}

C1类实现接口S1(紫云剑):

实现S1接口

public class C1 implements S1 {    @Override    public void show() {        System.out.println("打造了一把紫云剑");    }}

D1类实现接口S1(雨花剑):

实现S1接口

public class D1 implements S1 {    @Override    public void show() {        System.out.println("打造了一把紫云剑");    }}

E1类实现接口S1(青光剑):

实现Ss接口

public class E1 implements S1 {    @Override    public void show() {        System.out.println("打造了一把紫云剑");    }}

F1类实现接口S1(奔雷剑):

实现Ss接口

public class F1 implements S1 {    @Override    public void show() {        System.out.println("打造了一把紫云剑");    }}

G1类实现接口S1(旋风剑):

实现Ss接口

public class G1 implements S1 {    @Override    public void show() {        System.out.println("打造了一把紫云剑");    }}

A2类实现接口S2(灵鸽一号):

实现S1接口

public class A2 implements S2 {    @Override    public void show() {        System.out.println("灵鸽七号");    }}

B2类实现接口S2(灵鸽二号):

实现S1接口

public class B2 implements S2 {    @Override    public void show() {        System.out.println("灵鸽七号");    }}

C2类实现接口S2(灵鸽三号):

实现S1接口

public class C2 implements S2 {    @Override    public void show() {        System.out.println("灵鸽七号");    }}

D2类实现接口S2(灵鸽四号):

实现S1接口

public class D2 implements S2 {    @Override    public void show() {        System.out.println("灵鸽七号");    }}

E2类实现接口S2(灵鸽五号):

实现Ss接口

public class E2 implements S2 {    @Override    public void show() {        System.out.println("灵鸽七号");    }}

F2类实现接口S2(灵鸽六号):

实现Ss接口

public class F2 implements S2 {    @Override    public void show() {        System.out.println("灵鸽七号");    }}

G2类实现接口S2(灵鸽七号):

实现Ss接口

public class G2 implements S2 {    @Override    public void show() {        System.out.println("灵鸽七号");    }}

抽象工厂、工厂

Zz接口(七侠传承):

接口内声明了一个铸剑方法abc1()和一个养鸽子方法abc2()

public interface Zz {    S1 abc1(String a);    S2 abc2(String a);}

Nan类实现接口Zz(师傅):

实现Zz接口

public class Nan implements Zz {    private static S1 s1;    private static S2 s2;    public S1 abc1(String a) {        if ("长虹剑".equals(a)) {            s1 = new A1();        } else if ("奔雷剑".equals(a)) {            s1 = new F1();        } else if ("青光剑".equals(a)) {            s1 = new E1();        } else if ("雨花剑".equals(a)) {            s1 = new D1();        } else if ("旋风剑".equals(a)) {            s1 = new G1();        } else {            System.out.println("铸剑失败");        }        return s1;    }    public S2 abc2(String a) {        if ("灵鸽一号".equals(a)) {            s2 = new A2();        } else if ("灵鸽二号".equals(a)) {            s2 = new F2();        } else if ("灵鸽三号".equals(a)) {            s2 = new E2();        } else if ("灵鸽四号".equals(a)) {            s2 = new D2();        } else if ("灵鸽五号".equals(a)) {            s2 = new G2();        } else {            System.out.println("领养失败");        }        return s2;    }}

Nv类实现接口Zz(师娘):

实现Zz接口

public class Nv implements Zz {    private static S1 s1;    private static S2 s2;    public S1 abc1(String a) {        if ("冰魄剑".equals(a)) {            s1 = new B1();        } else if ("紫云剑".equals(a)) {            s1 = new C1();        } else {            System.out.println("铸剑失败");        }        return s1;    }    public S2 abc2(String a) {        if ("灵鸽六号".equals(a)) {            s2 = new B2();        } else if ("灵鸽七号".equals(a)) {            s2 = new C2();        } else {            System.out.println("领养失败");        }        return s2;    }}

测试

测试类:

public class Demo {    public static void main(String[] args) {        System.out.println("---------至阳传承-------------");        //师傅        Nan nan = new Nan();        //造剑        S1 a1 = nan.abc1("长虹剑");        S1 d1 = nan.abc1("雨花剑");        S1 e1 = nan.abc1("青光剑");        S1 f1 = nan.abc1("奔雷剑");        S1 g1 = nan.abc1("旋风剑");        //养鸽子        S2 a2 = nan.abc2("灵鸽一号");        S2 d2 = nan.abc2("灵鸽二号");        S2 e2 = nan.abc2("灵鸽三号");        S2 f2 = nan.abc2("灵鸽四号");        S2 g2 = nan.abc2("灵鸽五号");        a1.show();        d1.show();        e1.show();        f1.show();        g1.show();        a2.show();        d2.show();        e2.show();        f2.show();        g2.show();        System.out.println("---------至阴传承-------------");        //女铸剑师        Nv nv = new Nv();        S1 b1 = nv.abc1("冰魄剑");        S1 c1 = nv.abc1("紫云剑");        b1.show();        c1.show();        S2 b2 = nv.abc2("灵鸽六号");        S2 c2 = nv.abc2("灵鸽七号");        b2.show();        c2.show();    }}

感谢各位的阅读,以上就是“JAVA抽象工厂模式是什么及怎么实现”的内容了,经过本文的学习后,相信大家对JAVA抽象工厂模式是什么及怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: JAVA抽象工厂模式是什么及怎么实现

本文链接: https://www.lsjlt.com/news/327629.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JAVA抽象工厂模式是什么及怎么实现
    这篇文章主要讲解了“JAVA抽象工厂模式是什么及怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JAVA抽象工厂模式是什么及怎么实现”吧!什么是抽象工厂模式抽象工厂(AbstractF...
    99+
    2023-06-30
  • java抽象工厂模式怎么实现
    本篇内容介绍了“java抽象工厂模式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!抽象工厂只实现了一个 createHum...
    99+
    2023-06-19
  • JavaScript抽象工厂及工厂方法模式是什么
    这篇文章主要介绍“JavaScript抽象工厂及工厂方法模式是什么”,在日常操作中,相信很多人在JavaScript抽象工厂及工厂方法模式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2024-04-02
  • 什么是抽象工厂模式
    这篇文章主要介绍“什么是抽象工厂模式”,在日常操作中,相信很多人在什么是抽象工厂模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是抽象工厂模式”的疑惑有所帮助!接下来,...
    99+
    2024-04-02
  • Java简单工厂,工厂方法,抽象工厂模式怎么实现
    这篇文章主要讲解了“Java简单工厂,工厂方法,抽象工厂模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java简单工厂,工厂方法,抽象工厂模式怎么实现”吧!1、简单工厂模式1.定...
    99+
    2023-06-29
  • Python怎么实现抽象工厂模式
    这篇文章主要介绍“Python怎么实现抽象工厂模式”,在日常操作中,相信很多人在Python怎么实现抽象工厂模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python怎么实现抽象工厂模式”的疑惑有所帮助!...
    99+
    2023-06-19
  • 怎么用Java代码实现抽象工厂模式
    这篇文章主要介绍“怎么用Java代码实现抽象工厂模式”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用Java代码实现抽象工厂模式”文章能帮助大家解决问题。解决工厂方法模式的问题:一个具体工厂只能...
    99+
    2023-06-29
  • .Net设计模式之抽象工厂模式怎么实现
    这篇文章主要讲解了“.Net设计模式之抽象工厂模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“.Net设计模式之抽象工厂模式怎么实现”吧!一、动机(Motivation)在软件系统...
    99+
    2023-06-30
  • Java中什么是抽象工厂
    这篇文章将为大家详细讲解有关Java中什么是抽象工厂,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。抽象工厂模式1、什么是抽象工厂在现实生活中许多工厂是综合型的工厂,能生产多种类)的产品,就拿案例里面的可乐...
    99+
    2023-06-29
  • Java抽象工厂模式实例分析
    这篇文章主要介绍了Java抽象工厂模式实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java抽象工厂模式实例分析文章都会有所收获,下面我们一起来看看吧。1.什么是抽象工厂模式?抽象工厂模式: ...
    99+
    2023-06-29
  • java如何实现抽象工厂模式Abstract Factory
    这篇文章给大家分享的是有关java如何实现抽象工厂模式Abstract Factory的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在工厂类模式中,如果需要新的类时,需要修改工厂类,这样显然不利于扩展。在抽象工厂...
    99+
    2023-06-04
  • Java工厂模式之简单工厂,工厂方法,抽象工厂模式详解
    目录1、简单工厂模式1.定义2.代码案例3.适用场景4.优缺点2、工厂方法模式1.定义2.代码案例3.适用场景4.优缺点3、抽象工厂模式1.定义2.代码案例3.适用场景4.优缺点4、...
    99+
    2024-04-02
  • Python如何实现抽象工厂模式
    这篇文章主要介绍“Python如何实现抽象工厂模式”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何实现抽象工厂模式”文章能帮助大家解决问题。实 现下面是实现Abstract Facto...
    99+
    2023-06-19
  • 怎么理解Java设计模式的抽象工厂模式
    这篇文章主要讲解了“怎么理解Java设计模式的抽象工厂模式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解Java设计模式的抽象工厂模式”吧!一、什么是抽象工厂模式为创建一组相关或相互...
    99+
    2023-06-25
  • PHP抽象工厂模式的优点与实现方法是什么
    本篇内容介绍了“PHP抽象工厂模式的优点与实现方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!抽象工厂模式Abstract Fact...
    99+
    2023-07-05
  • php抽象工厂模式怎么应用
    抽象工厂模式是一种创建对象的设计模式,它提供了一种封装一组具有相似功能的工厂的方式。在PHP中,可以通过以下步骤应用抽象工厂模式:1...
    99+
    2023-08-30
    php
  • 详解Java实践之抽象工厂模式
    目录一、前言二、开发环境三、抽象工厂模式介绍四、案例场景模拟4.1、场景模拟工程4.2、场景简述4.2.1、模拟单机服务 RedisUtils4.2.2、模拟集群 EGM4.2.3、...
    99+
    2024-04-02
  • JS中抽象工厂模式如何实现
    这篇文章主要介绍了JS中抽象工厂模式如何实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。抽象工厂模式(Abstract Factory)就...
    99+
    2024-04-02
  • Java设计模式之工厂方法和抽象工厂
    全网最详细的工厂设计模式,本文主要是创建型设计模式中的工厂方法和抽象工厂,先由传统实现方式引出问题,接着对代码改进到简单工厂,后扩展到工厂方法,最后是抽象工厂模式,文中包括概念理解和...
    99+
    2024-04-02
  • java开发的工厂方法模式及抽象工厂验证示例
    目录工厂方法模式示例抽象工厂模式验证结论工厂方法模式示例 开发一个数据格式转换工具,将不同数据源如:txt、excel等格式文件,转换为XML格式输出,需考虑今后其他格式的文件也需要...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作