设计模式—抽象工厂模式(java实现示例)

一、相关定义

抽象工厂: 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

产品族: 一个品牌下面的所有产品;例如TCL下面的电视、空调、冰箱称为TCL的产品族;

产品等级:多个品牌下面的同种产品;例如海信和TCL下面的电视称为一个产品等级

二、实例分析

现有电器产品厂商基于TCL和Hisense生产不同类型的电视和冰箱,用抽象工厂模式描述该场景。

问题分析:
TCL包括TCLTV、TCLRef;Hisense包括HisenseTV、HisenseRef;由一个超级工厂接口、两个产品接口(TV、Ref),实现两个工厂类(TCL、Hisense),实现四个产品

三、类图

在这里插入图片描述

在这里插入图片描述

四、java实现

1、超级工厂接口

public interface interfaceFactory {//抽象工厂
	public TV createTV();
	public Ref createRef();
} 

2、Hisense工厂

public class HisenseFactory implements interfaceFactory {
	public TV createTV() {
		return new HisenseTV();
	}
	public Ref createRef() {
		return new HisenseRef();
	}
}

3、TCL工厂

public class TCLFactory implements interfaceFactory {
	public TV createTV() {
		return new TCLTV();
	}
	public Ref createRef() {
		return new TCLRef();
	}
}

4、TV接口

public interface TV {
	public void TVRun();
}

5、HisenseTV

public class HisenseTV implements TV {
	@Override
	public void TVRun() {
		System.out.println("Hisense TV run!");
	}
}

6、TCLTV

public class TCLTV implements TV {
	@Override
	public void TVRun() {
		System.out.println("TCL TV run!");
	}
}

7、Ref接口

public interface Ref {
	public void RefRun();
}

8、HisenseRef

public class HisenseRef implements Ref {
        @Override
	public void RefRun() {		System.out.println("Hisense Ref run!");
	}
}

9、TCLRef

public class TCLRef implements Ref {
	@Override
	public void RefRun() {
		System.out.println("TCL Ref run!");
	}
}

五、优缺点分析

优点

产品等级的扩展比较简单,例如增加一个格力工厂生产这两种产品;更加适用于一个产品族中的多个对象被设计成一起工作,它能保证客户端始终只使用同一个产品族中的对象(将一个系列的产品统一一起创建)。同时保证了客户端不知道工厂具体生产的产品。

缺点

产品族扩展非常困难,例如增加一个手机产品,既要修改工厂抽象类里加代码,又修改具体的实现类里面加代码,破坏了开闭原则;增加了系统的抽象性和理解难度;

参考博客:https://blog.csdn.net/qq_33732195/article/details/110101808

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌兮_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值