设计模式(三)—— 抽象工厂模式(定义、案例分析、特点、缺点)

本文详细介绍了抽象工厂模式,包括定义、情景假设、模式结构与分析,以及适用场景。通过对家电工厂的案例分析,展示了如何使用抽象工厂模式创建相关产品,同时讨论了模式的特点和缺点。文章指出,虽然该模式在增加产品族时具有灵活性,但在增加新产品等级结构时却违背了开闭原则。
摘要由CSDN通过智能技术生成


前言

文章内容主要参考了刘伟主编的《设计模式(第2版)》,同时也结合了自己的一些思考和理解,希望能帮到大家。


本篇文章建议先阅读简单工厂模式以及工厂方法模式

正文

一、定义

抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。

在这模式中,提出了产品等级结构(即一类产品的层级结构,比如电视机抽象类-海尔电视机、,空调抽象类-海尔空调具体类)和产品族(一个品牌或者说工厂下的所有产品集合)的概念,在存在多个产品等级结构的情况下(回想我们的工厂方法模式里面,其实我们只假设了所有的工厂品牌都只生产电视机,但其实他们不止电视机,可能还生产冰箱、空调等等),如果单是用工厂方法模式而显得非常庞大,这时候就要引入抽象工厂模式。

二、情景假设

某一个电器工厂可以产生多种类型的电器,如海尔工厂可以生产海尔电视机、海尔空调等,TCL工厂可以生产TCL电视机、TCL空调等,相同品牌的电器构成一个产品族,而相同类型的电器构成了一个产品等级结构,现使用抽象工厂模式模拟该场景。

在看代码前我们可以自己脑补你会怎么编写?这时候我们突然想起来刚学的工厂方法模式,电视、空调等电器先来个抽象类,然后来个实现类。工厂就建成海尔电视机工厂、海尔空调工厂、TCL电视机工厂、TCL空调工厂,然后再关联一下ok。
好了这个时候我相信你已经发现了问题了,是不是某些地方特别冗余(手动狗头)。没关系,这个事情后面再说,接下来核对自己的想法叭。

三、情景分析

关于上面情景的类图(具体分析在下面)
在这里插入图片描述

首先应该会有个电视Television类和空调AirConditioner类,因为我们最后就是要生产出电视给客户。(别看着类图头晕,我们先搞定我们的产品类,相当于类图右半边)

//抽象类Television
public interface Television
{
   
	public void play();
}

//具体实现类
//HaierTelevision
public class HaierTelevision implements Television
{
   
	public void play() {
   
		System.out.println("海尔电视机播放中!");
	}
}
//HisenseTelevision
public class HisenseTelevision implements Television
{
   
	public void play() {
   
		System.out.println("海信电视机播放中!");
	}
}
//抽象类AirConditioner
public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值