设计模式学习笔记(四)--工厂模式

本文解析了简单工厂模式、工厂方法模式及抽象工厂模式的区别与应用场景。简单工厂模式是一种编程习惯,工厂方法模式允许子类决定实例化哪个类,而抽象工厂模式则提供了一个创建一系列相关或相互依赖对象的接口。

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

[同系列文章]
1.设计模式学习笔记(一)- -策略模式
2.设计模式学习笔记(二)- -观察者模式
3.设计模式学习笔记(三)- –装饰者模式


这一章节内容有点多,虽说不难,但是却容易混淆概念。


简单工厂模式:其实不是一个设计模式,只是一种编程习惯;相当于把重复的new 子类对象抽出来,然后return父类;运行时动态改变行为喔(把某种类型传给工厂,工厂对这个类型进行处理,返回对象)

因为很简单,代码不贴了,直接上图
这里写图片描述

这里写图片描述

这里写图片描述

文章中的提醒:
在设计模式中,所谓的“实现一个接口”,并不一定表示“写一个类,并利用implement关键词来实现某一个接口”。“实现一个接口”泛指:实现某个超类型(可以是接口某个方法)。

书中为了引出工厂模式花了好多功夫,写了好几页,现在正式来认识我们的新伙伴——工厂方法模式以及抽象工厂模式


工厂方法模式的定义:

定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。

偷懒大法,原谅我偷图图): (N天之后过来复习,我应该还会记得的吧…=-=)

以生产出不同口味的披萨为例

1、这个是披萨店,是一个抽象类(接口)

这里写图片描述
这里写图片描述
2、这个是继承了抽象披萨店类的纽约披萨店(实现)

这里写图片描述

3、生产
这里写图片描述

4、披萨的基类(抽象类),所有具体披萨都要派生自这个类
这里写图片描述
这里写图片描述
这里写图片描述


抽象工厂模式的定义:

提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

以生产原料的工厂为例:

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述


OK,本章以偷懒的方式结束。工厂方法模式和抽象工厂模式不要搞混淆了喔。
再做个总结吧,企图洗清偷懒的嫌疑:)

总结:

抽象工厂模式:

1.创建对象 通过 对象的组合
2.提供一个产品家族的抽象类型,这个类型的子类定义了产品被产生的法法;
3.当需要让 创建产品家族 和 参与制造的相关产品 集合起来时,可以用到它;

工厂方法模式:

1.创建对象用 继承
2.通过子类来创建对象,由子类决定具体类型;
3.把用户端代码 从 需要实例化具体类中解耦~;

OO原则

  1. 多用组合,少用继承
  2. 针对接口编程,不针对实现编程
  3. 为交互对象之间的松耦合设计而努力
  4. 类应该对扩展开放,对修改关闭
  5. 依赖抽象,不需要依赖具体类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值