设计模式-创建型-抽象工厂模式-Abstract Factory

news/2025/3/14 22:53:42/
UML类图

工厂接口类

public interface ProductFactory {Phone phoneProduct();//生产手机Router routerProduct();//生产路由器
}

小米工厂实现类

public class XiaomiFactoryImpl implements ProductFactory {@Overridepublic Phone phoneProduct() {return new XiaomiPhoneImpl();}@Overridepublic Router routerProduct() {return new XiaomiRouterImpl();}
}

华为工厂实现类

public class HuaweiFactoryImpl implements ProductFactory {@Overridepublic Phone phoneProduct() {return new HuaweiPhoneImpl();}@Overridepublic Router routerProduct() {return new HuaweiRouterImpl();}
}

手机接口类

public interface Phone {void start();//开机void callUp();//打电话
}

小米手机实现类

public class XiaomiPhoneImpl implements Phone {@Overridepublic void start() {System.out.println("小米手机开机...");}@Overridepublic void callUp() {System.out.println("小米手机打电话...");}
}

华为手机实现类

public class HuaweiPhoneImpl implements Phone {@Overridepublic void start() {System.out.println("华为手机开机...");}@Overridepublic void callUp() {System.out.println("华为手机打电话...");}
}

路由器接口类

public interface Router {void start();//开机void openWifi();//打开WiFi
}

小米路由器实现类

public class XiaomiRouterImpl implements Router {@Overridepublic void start() {System.out.println("小米路由器开机...");}@Overridepublic void openWifi() {System.out.println("小米路由器打开WiFi...");}
}

华为路由器实现类

public class HuaweiRouterImpl implements Router {@Overridepublic void start() {System.out.println("华为路由器开机...");}@Overridepublic void openWifi() {System.out.println("华为路由器打开WiFi...");}
}

演示类

public class Demo {public static void main(String[] args) {ProductFactory xiaomiFactory = new XiaomiFactoryImpl();ProductFactory huaweiFactory = new HuaweiFactoryImpl();//小米工厂生产手机Phone xiaomiPhone = xiaomiFactory.phoneProduct();xiaomiPhone.start();xiaomiPhone.callUp();//小米工厂生产路由器Router xiaomiRouter = xiaomiFactory.routerProduct();xiaomiRouter.start();xiaomiRouter.openWifi();//华为工厂生产手机Phone huaweiPhone = huaweiFactory.phoneProduct();huaweiPhone.start();huaweiPhone.callUp();//华为工厂生产路由器Router huaweiRouter = huaweiFactory.routerProduct();huaweiRouter.start();huaweiRouter.openWifi();}
}

演示结果:


http://www.ppmy.cn/news/1434631.html

相关文章

聊聊linux的文件缓存

序 本文主要研究一下linux的文件缓存 文件缓存 linux使用page cache来缓存最近读取的文件,也有目录结构(dcache: Directory Entry Cache)缓存及inode缓存,它们都使用了LRU算法来管理这些page及dentries cache vmstat ## vmstat procs -----------me…

【Python打包exe文件】

Python打包exe文件 ■ Python打包exe文件■■■ ■ Python打包exe文件 需求: 自己写的Python代码,在对方电脑里没有安装py环境无法运行,怎么办? 答:打包成exe文件发送对方就能运行。 首先自己写的python代码自己要能…

JetBrains PhpStorm v2024.1 安装教程 (PHP集成开发IDE)

前言 PhpStorm是由JetBrains推出的一款轻量级集成开发环境,专为PHP开发者而设计。该软件融合了智能的HTML/CSS/JavaScript/PHP编辑器、代码质量分析工具、版本控制系统集成(包括SVN和GIT)、调试和测试等功能。除此之外,PhpStorm还…

第二期书生浦语大模型训练营第四次笔记

大模型微调技术 大模型微调是一种通过在预训练模型的基础上,有针对性地微调部分参数以适应特定任务需求的方法。 微调预训练模型的方法 微调所有层:将预训练模型的所有层都参与微调,以适应新的任务。 微调顶层:只微调预训练模型…

基于百度文心大模型全面重构,小度正式推出AI原生操作系统DuerOS X

4月16日,以“创造未来”为主题的2024百度Create AI开发者大会在深圳举办。百度集团副总裁、小度科技CEO李莹正式发布了小度新一代操作系统DuerOS X,该操作系统是小度基于百度文心大模型推出的全球首个AI原生操作系统。李莹表示:“作为⽂⼼⼤模…

IDEA中添加servlet模板

官方代码链接 #if (${PACKAGE_NAME} && ${PACKAGE_NAME} ! "")package ${PACKAGE_NAME};#end #parse("File Header.java")import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.IOException…

C++:类与对象完结篇

hello,各位小伙伴,本篇文章跟大家一起学习《C:运算符重载》,感谢大家对我上一篇的支持,如有什么问题,还请多多指教 ! 文章目录 重新认识构造函数1.初始化列表2.explicit关键字 static成员1.sta…

Elasticsearch进阶篇(三):ik分词器的使用与项目应用

ik分词器的使用 一、下载并安装1.1 已有作者编译后的包文件1.2 只有源代码的版本1.3 安装ik分词插件 二、ik分词器的模式2.1 ik_smart演示2.2 ik_max_word演示2.3 standard演示 三、ik分词器在项目中的使用四、ik配置文件4.1 配置文件的说明4.2 自定义词库 五、参考链接 一、下…