您的位置 首页 java

Java设计模式(十二):抽象工厂模式

抽象工厂模式(abstract factory pattern)

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


抽象工厂模式UML图

Java设计模式(十二):抽象工厂模式


抽象工厂模式涉及的角色

抽象工厂(AbstractFactory)角色: 是一个抽象接口,它里面包含所有产品创建的抽象方法。 具体工厂(ConcreteFactory)角色: 具体工厂角色通常是在运行时刻再创建,这个具体的工厂再去创建具有特定实现的产品对象,也就是说,为创建不同的产品对象,客户端应使用不同的具体工厂。 抽象产品(AbstractProduct)角色: 用来创建不同的实现。 具体产品(ConcreteProduct)角色: 抽象产品的实现。


示例代码

实体类 User

Java设计模式(十二):抽象工厂模式

Java

实体类 Department

Java设计模式(十二):抽象工厂模式

Java

抽象产品类 AbstractUser

Java设计模式(十二):抽象工厂模式

Java

抽象产品类 AbstractDepartment

Java设计模式(十二):抽象工厂模式

Java

产品类 MysqlUser

Java设计模式(十二):抽象工厂模式

Java

产品类 OracleUser

Java设计模式(十二):抽象工厂模式

Java

产品类 MysqlDepartment

Java设计模式(十二):抽象工厂模式

Java

产品类 OracleDepartment

Java设计模式(十二):抽象工厂模式

Java

抽象工厂类 AbstractFactory

Java设计模式(十二):抽象工厂模式

Java

具体工厂类 MysqlFacory

Java设计模式(十二):抽象工厂模式

Java

具体工厂类 OracleFacory

Java设计模式(十二):抽象工厂模式

Java

客户端测试类 TestAbstractFactoryPattern

Java设计模式(十二):抽象工厂模式

Java


抽象工厂模式优缺点

两个概念

  1. 产品等级结构:产品等级是由相同的结构的产品组成。如组成电脑的 主板 、芯片组、CPU。

  2. 产品族:是指位于不同产品等级结构中,功能相关联的产品组成的家族。比如 AMD 的主板、芯片组、CPU组成一个家族, Intel 的主板、芯片组、CPU组成一个家族。

抽象工厂模式的优点

  1. 分离接口和实现:客户端使用抽象工厂来创建需要的对象,而客户端根本就不知道具体的实现是谁,客户端只是面向产品的接口编程而已。也就是说,客户端从具体的产品实现中 解耦

  2. 使切换产品族变得容易:因为一个具体的工厂实现代表的是一个产品族,比如上面例子的从Intel系列到AMD系列只需要切换一下具体工厂。

抽象工厂模式的缺点

  1. 不太容易扩展新的产品:如果需要给整个产品族添加一个新的产品,那么就需要修改抽象工厂,这样就会导致修改所有的工厂实现类。例如,如果再增加一个项目表 Project,则需要增加三个类,AbstractProject、MysqlProject、OracleProject,还需要更改 AbstractFactory、MysqlFactory、OracleFactory 才可以实现。

  2. Java学习资料获取(复制下段连接至浏览器即可)

    data:text/html;charset=UTF-8;base64,5p625p6E5biI5a2m5Lmg6LWE5paZ5YWN6LS56aKG5Y+W6K+35Yqg5omj5omj5Y+35pivMTAxODkyNTc4MA==

文章来源:智云一二三科技

文章标题:Java设计模式(十二):抽象工厂模式

文章地址:https://www.zhihuclub.com/177518.shtml

关于作者: 智云科技

热门文章

网站地图