什么是抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是一种软件开发设计模式。抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。如果比较抽象工厂模式和工厂模式,我们不难发现前者只是在工厂模式之上增加了一层抽象的概念。抽象工厂是一个父类工厂,可以创建其它工厂类。所以我们也叫它 “工厂的工厂”。(想想上节课的 “女娲娘娘”,这简直就是 “女娲娘娘的亲娘” 啊...)
抽象工厂模式类图
“女娲娘娘”只有一个,而我们的工厂却可以有多个,因此在这里用作例子就不合适了。作为“女娲娘娘”生产出来的男人女人们,那就让我们来当一次吃货吧。(吃的东西总可以任性多来一点)
现在,假设我们有 A、B 两个厨房。每个厨房拥有的餐具和食品都不一样,但是用户搭配使用的方式,比如刀子和苹果、杯子和牛奶等等,我们假设是一致的。
// 抽象食物 interface Food { public String getFoodName(); } // 抽象餐具 interface TableWare { public String getToolName(); } // 抽象工厂 interface KitchenFactory { public Food getFood(); public TableWare getTableWare(); } // 具体食物 Apple 的定义如下 class Apple implements Food{ public String getFoodName() { return "apple"; } } // 具体餐具 Knife 的定义如下 class Knife implements TableWare { public String getToolName() { return "knife"; } } // 以具体工厂 AKitchen 为例 class AKitchen implements KitchenFactory { public Food getFood() { return new Apple(); } public TableWare getTableWare() { return new Knife(); } } // 吃货要开吃了 public class Foodaholic { public void eat(KitchenFactory k) { System.out.println("A foodaholic is eating "+ k.getFood().getFoodName() + " with " + k.getTableWare().getToolName() ); } public static void main(String[] args) { Foodaholic fh = new Foodaholic(); KitchenFactory kf = new AKitchen(); fh.eat(kf); } }
抽象工厂模式应用
抽象工厂模式特别适合于这样的一种产品结构:产品分为几个系列,在每个系列中,产品的布局都是类似的,在一个系列中某个位置的产品,在另一个系列中一定有一个对应的产品。这样的产品结构是存在的,这几个系列中同一位置的产品可能是互斥的,它们是针对不同客户的解决方案,每个客户都只选择其一。
本文来自博客园,作者:wjxuriel,转载请注明原文链接:https://www.cnblogs.com/my-blog-site/p/16293471.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?