会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 设计模式系列-抽象工厂模式!

设计模式系列-抽象工厂模式

时间:2025-11-04 23:29:42 来源:益强数据堂 作者:数据库 阅读:596次

 

本文转载自微信公众号「花括号MC」,设计作者花括号MC。模式模式转载本文请联系花括号MC公众号。系列

抽象工厂提供了一个创建一系列相关或相互依赖对象的抽象接口,而无需指定他们具体的工厂类。简单来说是设计为需要创建多个相关联产品的场景提供了解决思路。

举个例子

很多软件都支持配置不同的模式模式颜色的主题,当切换主题时,系列所有按钮样式和颜色都会统一切换。抽象

假设我们的工厂软件只有三类按钮,分别是源码库设计Button, TextField,以及ComboBox,模式模式并且我们的系列软件只提供两类主题,即红色主题和绿色主题。抽象

来看一下UML :

再来看一下具体代码如何实现。工厂

先来创建一个SkinFactory接口

public interface SkinFactory {     Button createButton();     TextField createTextField();     ComboBox createComboBox(); } 

通过实现SkinFactory实现绿色主题工厂

//红色主题工厂 public class RedSkinFactory implements SkinFactory {     @Override     public Button createButton() {         return new RedButton();     }     @Override     public TextField createTextField() {         return new RedTextField();     }     @Override     public ComboBox createComboBox() {         return new RedComboBox();     } } 

红色主题工厂类类似,因为篇幅原因不在单独列出。

来看一下客户端如何使用

public class Client {     public static void main(String[] args){         //通过切换不同工厂,可以达到所有按钮颜色都变换的效果         SkinFactory skinFactory = new RedSkinFactory();         Button button = skinFactory.createButton();         ComboBox comboBox = skinFactory.createComboBox();         TextField textField = skinFactory.createTextField();         button.display();         comboBox.display();         textField.display();     } } 

总结

抽象工厂是创建模式之一,抽象工厂适合创建一系列有相关性的多个产品,虽然抽象工厂在扩展一个主题的按钮时灵活方便,但是b2b信息网也有一定缺点, 最大缺点就是想单独增加一个不属于任何主题的按钮时比较麻烦,比如上面的例子中,如果想增加一个关闭按钮,这个按钮即不属于红色主题也不属于绿主题,那么改动起来就比较复杂。

工厂模式三兄弟:简单工厂适合逻辑简单,创建产品数量很少的场景,工厂模式适合创建独立的产品,抽象工厂适合创建一系列有相关性的多个产品。

源码下载

(责任编辑:数据库)

推荐内容
  • 深度解析iPadmini3(探究iPadmini3的关键特性及其与前代产品的差异)
  • 物联网边缘计算的工业用例
  • 制造业的工业4.0:IT/OT融合之路
  • 物联网如何改变制造业
  • 清华同方N768教程(一键开启科技新时代,解锁清华同方N768的神秘功能)
  • CMU15-445 数据库系统播客:查询执行模型与数据访问