java抽象工厂模式(JAVA抽象工厂模式中,类图里具体工厂类和具体产品类之间的关系为什么是依赖关系)

:暂无数据 2026-08-03 21:10:02 :0

java抽象工厂模式(JAVA抽象工厂模式中,类图里具体工厂类和具体产品类之间的关系为什么是依赖关系)

大家好,java抽象工厂模式相信很多的网友都不是很明白,包括JAVA抽象工厂模式中,类图里具体工厂类和具体产品类之间的关系为什么是依赖关系也是一样,不过没有关系,接下来就来为大家分享关于java抽象工厂模式和JAVA抽象工厂模式中,类图里具体工厂类和具体产品类之间的关系为什么是依赖关系的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

JAVA抽象工厂模式中,类图里具体工厂类和具体产品类之间的关系为什么是依赖关系

是的吧,我感觉就是这么回事,关联关系不如依赖那么紧毕竟。A本身没有B的引用,却需要B,那么A必须要有B的引用作为参数。要是A本身有B的引用,那么B是A的一个组成部分了,在程序中A就不需要B作为参数来提供给A了。

Java 什么是抽象工厂,请举个例子

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

举一个电脑产品的例子吧:

IBM,Dell都是著名的计算机生产厂家,他们采用的主板、硬盘及CPU是不相同的,但是配件间、主板与CPU一定要相互兼容,例如下面例子中的微星MSIK7N2G配AMD的CPU;微星MSI865PE配Intel的CPU。

如图中所示,ComputerFactory是抽象工厂,Dell和IBM是生产产品的工厂;CPU、HardDisk、MainBoard是抽象产品,CPU的型号又分许多种。具体实现见代码:

首先,定义CPU的接口:

public interface CPU{

    public String getCPU();

}

定义AMD类,实现CPU接口:

public class AMD implements CPU{

    public String getCPU(){

        return “Athlon XP 2008+”;

    }

定义Intel类,实现CPU接口:

public class Intel implements CPU{

    public String getCPU(){

        return “奔腾4 3.2C”;

    }

}

定义硬盘接口:

public interface HardDisk{

    public String getSize();

}

定义Maxtor类,实现硬盘接口:

public class Maxtor implements HardDisk{

    public String getSize(){

        return “MaXLine Plus II 200G”;

    }

}

定义WestDigit,实现硬盘接口:

public class WestDigit implements HardDisk{

    public String getSize(){

        return “WD2500JD 250G”;

    }

}

定义主板的接口,包含参数为CPU的公共方法Attach():

public interface MainBoard{

    public void Attach(CPU cpu) throws Exception;

}

主板微星MSI865PE,支持Intel的CPU:

public class MSI865PE implements MainBoard{

    public void Attach(CPU cpu) throws Exception{

        if(cpu.getClass ().toString ().endsWith(“Intel”)){

            System.out.println(“MSI865PE”);

        }

         else{

            throw new Exception(“主板MSI865PE只能配Intel的                                        CPU”);

        }

    }

}

主板微星MSIK7N2G,支持AMD的CPU:

public class MSIK7N2G implements MainBoard{

    public void Attach(CPU cpu) throws Exception{

        if(cpu.getClass ().toString ().endsWith(“AMD”)){

            System.out.println(“MSIK7N2G”);

        }

        else{

            throw new Exception(“主板MSIK7N2G只能配AMD的CPU”);

        }

    }

}

定义抽象电脑工厂类:

public abstract class ComputerFactory{

    CPU cpu;

    HardDisk hd;

    MainBoard mb;

public void show(){

        try{

            System.out.println(this.getClass().getName() .toString () + (“生产的电脑配置”);

            System.out.println (“CPU:” + cpu.getCPU ());

            System.out.println (“HardDisk:” + hd.getSize ());

            System.out.print (“MainBoard:”);

            mb.Attach.(cpu);

        }

catch(Exception e){

            System.err.println(e.getMessage());

        }

    }

}

抽象电脑工厂类派生类IBM,定义其返回的系列配件产品:

public class IBM extends ComputerFactory{

    IBM(){

        cpu = new Intel();

        hd = new WestDigit();

        mb = new MSI865PE();

    }

}

抽象电脑工厂类派生类Dell,定义其返回的系列配件产品:

public class Dell extends ComputerFactory{

    Dell(){

        cpu = new AMD();

        hd = new Maxtor();

        mb = new MSIK7N2G();

    }

}

客户程序调用:

Public class Client{

    public static void main(String argv){

        IBM ibm = new IBM();

        ibm.show();

        Dell dell = new Dell();

        dell.show();

    }

}

输出结果为:

Computerworld.IBM生产的电脑配置

CPU:奔腾4 3.2C

HardDisk:WD2500JD 250G

MainBoard:MSI865PE

Computerworld.Dell生产的电脑配置

CPU:Athlon XP 2800+

HardDisk:MaXLine Plus II 200G

MainBoard:MSIK7N2G

java中抽象工厂模式和原型模式之间的区别

工厂模式的好处就在于将工厂和产品之间的耦合降低,将具体产品的构造过程放在了具体工厂类里面。在以后扩展产品的时候方便很多,只需要添加一个工厂类,一个产品类,就能方便的添加产品,而不需要修改原有的代码。而在简单工厂中,如果要增加一个产品,则需要修改工厂类,增加if/else分支,或者增加一个case分支,工厂模式符合软件开发中的OCP原则(open close principle),对扩展开放,对修改关闭。
抽象工厂模式:这个模式我总是感觉和builder模式非常相似。
工厂方法模式提供的是对一个产品的等级模式,,而抽象工厂方法提供的是对多个产品的等级模式,注意,这里的多个具体产品之间是相互耦合的,也就是说这里的抽象工厂提供的产品之间是存在某种联系的。
有人做如下的比较:
工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类只能创建一个具体产品类的实例。
抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类可以创建多个具体产品类的实例。
区别:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。
工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

java这句要怎么理解啊(工厂模式的)抽象的工厂模式

Provider接口是抽象工厂,具体的工厂实现这个接口,接口里定义的public Sender produce(); 这句说明生成出来的对象是实现了Sender接口的对象,而不是具体的对象(这里是抽象工厂的重要体现)。

关于java抽象工厂模式和JAVA抽象工厂模式中,类图里具体工厂类和具体产品类之间的关系为什么是依赖关系的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

java抽象工厂模式(JAVA抽象工厂模式中,类图里具体工厂类和具体产品类之间的关系为什么是依赖关系)

本文编辑:admin

本文相关文章:


依赖关系的四种类型(依赖了不该依赖的人,怎么办)

依赖关系的四种类型(依赖了不该依赖的人,怎么办)

“依赖关系的四种类型”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看依赖关系的四种类型(依赖了不该依赖的人,怎么办)!

2026年6月6日 14:00

更多文章:


dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)

dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)

本篇文章给大家谈谈dropdownlist 绑定,以及DropDownList 绑定所有项 并 显示指定项对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月11日 08:50

协方差计算公式(协方差的计算公式)

协方差计算公式(协方差的计算公式)

这篇文章给大家聊聊关于协方差计算公式,以及协方差的计算公式对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月11日 08:10

易语言网页api接口怎么调用(易语言,怎么读取网页json的api)

易语言网页api接口怎么调用(易语言,怎么读取网页json的api)

本篇文章给大家谈谈易语言网页api接口怎么调用,以及易语言,怎么读取网页json的api对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月11日 08:00

majority of(the majority of 和 a majority of的区别以及用法例句)

majority of(the majority of 和 a majority of的区别以及用法例句)

这篇文章给大家聊聊关于majority of,以及the majority of 和 a majority of的区别以及用法例句对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月11日 07:40

汉字机内码查询表(1个汉字的机内码是几位谢谢)

汉字机内码查询表(1个汉字的机内码是几位谢谢)

大家好,关于汉字机内码查询表很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于1个汉字的机内码是几位谢谢的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月11日 07:20

promote翻译(英语翻译倡导怎么说)

promote翻译(英语翻译倡导怎么说)

其实promote翻译的问题并不复杂,但是又很多的朋友都不太了解英语翻译倡导怎么说,因此呢,今天小编就来为大家分享promote翻译的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 06:30

用手机如何导航?开车用手机导航哪个软件最好

用手机如何导航?开车用手机导航哪个软件最好

今天给各位分享用手机如何导航的知识,其中也会对用手机如何导航进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 06:20

多线程技术有什么用(多线程有什么作用)

多线程技术有什么用(多线程有什么作用)

其实多线程技术有什么用的问题并不复杂,但是又很多的朋友都不太了解多线程有什么作用,因此呢,今天小编就来为大家分享多线程技术有什么用的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 05:40

another time(another time和other time的区别)

another time(another time和other time的区别)

大家好,another time相信很多的网友都不是很明白,包括another time和other time的区别也是一样,不过没有关系,接下来就来为大家分享关于another time和another time和other time的区

2026年10月11日 05:00

java开发工具包jdk(JDK是什么意思)

java开发工具包jdk(JDK是什么意思)

其实java开发工具包jdk的问题并不复杂,但是又很多的朋友都不太了解JDK是什么意思,因此呢,今天小编就来为大家分享java开发工具包jdk的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 04:50

最近更新

repercussions(都是余波,repercussions和aftermath有什么区别啊)
2026-10-11 09:00:05 浏览:0
dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)
2026-10-11 08:50:04 浏览:0
majority of(the majority of 和 a majority of的区别以及用法例句)
2026-10-11 07:40:02 浏览:0
热门文章

标签列表