ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

简单工厂模式,工厂方法模式,抽象工厂模式的区别

2019-04-09 23:00:42  阅读:287  来源: 互联网

标签:三星 模式 工厂 电视机 海尔 抽象 产品 方法


简单工厂中只有一个工厂,该工厂有一个创建产品的方法。根据传入参数不同,返回不同产品。

举个例子:一个电视机工厂,根据客户的需要,生产海尔电视机,三星电视机。

如果要新增一个产品,需要修改创建产品的方法。如果产品种类太多,代码会显得很笨重,不易维护。违背了开放-封闭原则。

工厂方法模式是对简单工厂的升级,将工厂抽象出来,工厂基类定义创建产品的方法。每个工厂都需要实现该方法。每个产品对应一个工厂,一个工厂只生产对应产品。

举个例子:只要是工厂都要能生产电视机。海尔工厂生产海尔电视机,三星工厂生产三星电视机。

如果要新增一个产品,只需要新增对应的工厂和方法即可。遵循了开放-封闭原则。但是每新增一个产品都需要新增对应的工厂。

抽象工厂模式是对工厂方法模式的升级。工厂基类除了定义创建电视机方法,还定义了创建微波炉的方法。

举个例子:只要是工厂都要能生产电视机和微波炉。海尔工厂生产海尔电视机,海尔微波炉。三星工厂生产三星电视机,三星微波炉。

如果要新增一个产品,也只需要新增对应的工厂和方法即可。这个层面上遵循了开放-封闭原则。

但是如果需要对工厂基类进行扩展,实现生产冰箱的话。则需要对各个工厂都进行修改。

三个设计模式各有利弊,需要根据场景进行使用。简单工厂用于生产少量的产品,等产品数量到了一定规模可以考虑使用工厂方法替代。工厂方法之后也可以升级为抽象工厂模式。

标签:三星,模式,工厂,电视机,海尔,抽象,产品,方法
来源: https://www.cnblogs.com/lgh344902118/p/10680439.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有