type
status
date
slug
summary
tags
category
icon
password
小明的烦恼
在一个繁忙的咖啡店里,小明是一名新来的咖啡师学徒。每当顾客点单时,他都需要记住制作各种咖啡的具体步骤:美式咖啡需要先萃取浓缩咖啡,然后加入热水;拿铁则需要在浓缩咖啡中加入蒸煮好的牛奶和奶泡;摩卡还要加入巧克力酱......
随着订单越来越多,小明经常搞混各种咖啡的制作流程,有时还会忘记某些步骤。店长看到这种情况,决定引入一个"咖啡制作机"。这台机器只需要输入咖啡类型,它就能自动完成相应的制作流程。
简单工厂模式
这个"咖啡制作机"就很像软件开发中的简单工厂模式。它帮我们解决了"创建对象"的问题 —— 当我们需要一个对象时,不需要知道这个对象是如何被创建的,只需要告诉工厂:"我要这种类型的对象",工厂就会按照预设的流程帮我们创建出来。
通过这个咖啡店的例子,我们可以看到工厂模式的几个优点:
- 将对象的创建与使用分离,使系统更容易维护和扩展
- 隐藏了对象创建的细节,使用者不需要知道具体的创建过程
- 当需要修改对象的创建过程时,只需要修改工厂类,而不需要修改使用者的代码
代码实现
接下来,让我们通过具体的代码示例,来看看如何实现这个咖啡制作工厂。
在上面的代码中,我们定义了一个
Coffee
接口,它声明了所有咖啡都需要实现的Brew()
方法。然后我们创建了三种具体的咖啡类型:美式咖啡、拿铁咖啡和摩卡咖啡,它们都实现了Coffee
接口。最后,我们创建了一个
CoffeeFactory
工厂类,它负责根据传入的咖啡类型创建相应的咖啡对象。让我们看看如何使用这个工厂:通过这个简单的工厂模式实现,我们可以看到:
- 代码结构清晰,每个咖啡类型都有自己的实现类
- 添加新的咖啡类型很容易,只需要创建新的结构体并实现
Coffee
接口
- 使用者只需要知道想要的咖啡类型,不需要了解具体的制作过程
- 所有的创建逻辑都集中在工厂类中,便于统一管理和修改
这就是简单工厂模式的基本实现。在实际项目中,我们可能需要处理更复杂的对象创建逻辑,但基本原理是相同的。
- 作者:阿杰鲁
- 链接:http://blog.zaunist.com/article/1927d549-6f33-80eb-964d-f266c628d806
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。