工厂模式学习笔记

本文详细介绍了工厂模式的三种形式:简单工厂、工厂方法和抽象工厂。分析了它们的区别、优缺点,并给出了适用场景建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近公司不是那么忙,抽空复习一下工厂模式加深印象和熟练使用,如果有写的不对的地方希望各位大神指点一二。


本文参考网上写的比较不错的博客和大话设计模式一书,感谢那些无私奉献的大神。好的,不客套了,进入正文:

工厂模式大致分为三种
1.简单工厂
2.工厂方法
3.抽象工厂


简单说一下他们之前的区别和优缺点:
工厂模式描述:定义一个创建其他类实例的类(可能不止一个类,本文中这么描述),被创建的实例们是一个基类的子类。
1.简单工厂
优点:使代码更加简练易读,教容易维护,容易扩展和复用。
缺点:违背开放关闭原则(开放扩展,关闭修改)
2.工厂方法
优点:完全符合开放关闭原则
缺点:每加一个产品就要多一个工厂类和产品类。
3.抽象工厂
优点:完全符合开放关闭原则,基于工厂方法的扩展,对于产品层级复杂的业务下能够轻松解决需求
缺点:每加一个产品就要多一个工厂类和产品类。
使用时根据自己的业务来使用,如逻辑比较简单而且生产的产品不会经常扩展或不修改,建议使用简单工厂。如产品教复杂建议使用工厂方法或抽象工厂,根据自己业务需求使用即可。


接下来详细了解一下各个工厂:


1.简单工厂:
该工厂有三个角色组成:
1.工厂类:用于生产具体产品实例。
2.产品抽象类:产品共性的抽象,用于被实现。

3.产品实例(一个或多个):具体产品,封装各自的实现。


2.工厂方法:
该工厂由四个角色组成:
1.抽象工厂类:工厂共性的抽象,用于被实现。
2.具体工厂类:具体工厂的实现,用于生产对应产品。
3.抽象产品类:产品共性的抽象,用于被实现。

4.产品实例: 具体产品,封装各自的实现。


3.抽象工厂:
该工厂与工厂方法的角色相同,只不过对产品的多样化有着很好的支持。


在此说明一下产品树和产品族的概念:
1.产品结构树是描述某一产品的物料组成及各部分文件组成的层次结构树状图。它是将产品数据管理中的产品信息,结合各个零部件之间的层级关系,组成一种有效的属性管理结构。

2.产品族设计基本思想是以产品平台(Platform) 战略为指导, 利用一个通用、成熟的产品平台( Platform) ,针对细分市场中不同客户群的需求,进行产品平台和基于产品平台的相关系列产品设计,以低成本和快速开发周期来满足不同客户的个性化需求。


那两个概念是百度的,弄不清楚没关系,下面我来举个例子便于理解:
现在有2件衣服,一件是nike的,一件是adidas的,可以属于同一个产品树,同属衣服,可以有不同风格的衣服,树形的层级关系。
而nike的T-shirt,和adidas的T-shirt属于同一个产品族,同属T-shirt,是同一种基于相同产品相关的系列产品,平行关系。
例子是自己想的,每个人的理解方式不同,但本文是自己笔记,不过多描述,如有不理解,自行百度。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值