编程语言
首页 > 编程语言> > Java设计模式(工厂模式和抽象工厂模式)

Java设计模式(工厂模式和抽象工厂模式)

作者:互联网

1.普通工厂模式

有个IProduct 产品接口 ,它下面有 5个实现类Product1、Product2、 Product3 、Product4、Product5。它们属于1个大类,可以通过1个工厂去管理它们的生成,但是由于类型不同,所以初始化有所不同 。为了方便使用产品工厂( ProductFactory )类来创建这些产品的对象,用户可以通过产品号来确定需要哪种产品。
在这里插入图片描述
ProductFactory类的伪代码:
在这里插入图片描述
对于程序调用者而言,它只需要知道通过工厂的 createProduct 方法,指定产品编号一productNo 可以得到对应的产品,而产品满足接口 IProduct 规范,所以初始化就简单了许多。

2. 抽象工厂模式

抽象工厂模式可以向客户端提供 多个接口,使得客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象。
在这里插入图片描述
仍以车厂为例,生产商不会把 轿车 大巴车、警车、吉普车 救护车等车型都放在一个车厂生产 那样会造成车厂异常复杂 从而导致难 管理 。所 以, 生产商通常会把它们按种类分为轿车厂 大巴车厂 警车厂 吉普车厂等分厂,每个种类下面有 些型号的产品。但是对于客户而言 只要告诉客服自己需要什么类型 至于如何分
厂那是客服的事情。
客户只是认为有 一个能够生产各类车的 工厂,能生成我所需要产品, 这里工厂只是个虚的概念 并不真实存在,它是通过车厂内部各分厂去实现的, 工厂被称为 抽象工厂 各个分厂称为具体工厂。为了统一,需要制定接口规范( ro ductFactory 所有的具体工厂和抽象工厂 要实现接口 IProductFactory工厂接口就可以设计成:
在这里插入图片描述
这里的工厂方法 createProduct是每个具体工厂和抽象工厂都要去实现的。先实现3个工厂类,它要实现 IProducWactory 接口 createProduct 方法,我们把 createProduct称为工厂的具体实现方法。
在这里插入图片描述
公共工厂:
在这里插入图片描述
通过抽象工厂可以知道只需要知道产品编号一-productNo ,就能通过ProductFactory创建产品的对象了。这样调用者不需要去理会ProductFactory 选择使用哪个具体工厂的规则。ProductFactory 就是 个抽象工厂,这样创建对象对调用者而 就简单多了。每个工厂也只要维护其类型产品对象的生成, 具体的工厂规则也不会特别复杂。

标签:ProductFactory,接口,工厂,车厂,抽象,模式,产品,设计模式
来源: https://blog.csdn.net/qq_33700236/article/details/115124748