失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 设计模式—抽象工厂模式(java实现示例)

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

时间:2019-01-31 01:46:06

相关推荐

设计模式—抽象工厂模式(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 {@Overridepublic void TVRun() {System.out.println("Hisense TV run!");}}

6、TCLTV

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

7、Ref接口

public interface Ref {public void RefRun();}

8、HisenseRef

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

9、TCLRef

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

五、优缺点分析

优点

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

缺点

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

参考博客:/qq_33732195/article/details/110101808

如果觉得《设计模式—抽象工厂模式(java实现示例)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。