产品经理如何快速理解设计模式

面向未来的产品经理要懂哪些技术 一文中提到产品经理要理解设计模式,但设计模式本身是一个偏技术的概念,不太容易理解。为此,本文会通过简单易懂的例子,让不太懂技术的产品经理也能快速上手设计模式,并应用到实际的功能设计中。

何为设计模式

设计模式其实是一个有一定年头的概念了,最初其实是出现在建筑领域的。1995 年 GoF(Gang of Four) 合作出版了《设计模式:可复用面向对象软件的基础》被认为是软件设计模式的里程碑事件。历经二十多年的业界发展,回过头来看书中收录的 23 中设计模式,依然不过时。

设计模式的定义很多,用人话来说就是经典的面向对象代码设计套路。所谓经典,就是源自大量的开发实践,在不断踩坑填坑中摸索出来的最佳方法。

思考题 1:你知道什么是面向对象吗?

功能最终是由代码实现的,而代码的组织可以参考设计模式,那么是不是意味着功能设计也存在着某种设计模式?这种设计模式有没有可能和软件工程中的设计模式有相通的地方?

没有答案也不要紧,接下来的各个章节就会围绕着这两个问题展开。实话实说,这两个问题其实并没有标准答案,以下都是我个人的浅薄理解,希望起到抛砖引玉的作用。

思考题 2:你知道正确运用设计模式对程序员来说有什么好处吗?

参考解答:设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。正确使用设计模式具有以下优点。

  1. 可以提高程序员的思维能力、编程能力和设计能力。
  2. 使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。
  3. 使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。

思考题 3:软件设计模式是面向机器的,迁移到面向用户的话,有哪些点是需要特别注意的?

长话短说 23 种设计模式

为了给各位产品经理一个大致的理解,这里力图用一句话来通俗(但不精准)来说明每种模式的核心思想,方便后面根据需要进行查找和深入研究:

创建型模式:描述如何创建对象 ,核心原则是将对象的创建与使用分离。对应到产品中的功能,就是如何创建和添加新的条目。

  1. 单例(Singleton)模式:Windows 系统中只能打开一个任务管理器。任务管理器是单例
  2. 原型(Prototype)模式:写周报的时候会把之前的周报复制一次,然后再进行修改和调整。上一周的周报就是原型
  3. 工厂方法(Factory Method)模式:赛车游戏中可以自由选择不同品牌的不同性能的赛车。
  4. 抽象工厂(AbstractFactory)模式:自动售货机只要选择了产品,点确定就会自动出来所需要的产品。
  5. 建造者(Builder)模式:通过组装 CPU、主板、内存、硬盘拼出一台可以运行的计算机。

思考题 4:创建型模式对产品设计有何启发和影响?

结构型模式:描述如何将对象组合成更大的结构。对应到产品中就是如何有机组合系统中的各个功能。

  1. 代理(Proxy)模式:通过黄牛抢演唱会门票,黄牛就是代理
  2. 适配器(Adapter)模式:需要通过读卡器来访问 SD 卡里面的照片,读卡器就是适配器
  3. 桥接(Bridge)模式:快餐店里的 10 元 2 肉 1 菜,具体肉和菜可以自由组合。
  4. 装饰(Decorator)模式:给手机装上一个手机壳,手机壳就是一个装饰
  5. 外观(Facade)模式:自己做饭需要买菜洗菜切菜炒菜洗碗,去饭店吃饭只要点菜即可,饭店把买菜洗菜切菜炒菜洗碗等细节隐藏起来,就是外观(注:这个翻译比较怪,但已经约定俗成了)
  6. 享元(Flyweight)模式:每个甜筒都有底座,只有挤出来的雪糕不一样,这里相同的底座就是享元
  7. 组合(Composite)模式:公司里分部门,部门里分小组,可以统一进行管理

思考题 5:结构型模式对产品设计有何启发和影响?

行为型模式:描述对象之间如何协作完成复杂任务,如何分配职责。对应到产品中就是如何将各个系统功能串起来,并最终解决用户的需求。

  1. 模板方法(TemplateMethod)模式:写简历、周报等都有模板。
  2. 策略(Strategy)模式:我要从深圳到广州,可以选择自己开车、做大巴、坐高铁,不同的方式就是策略,但都能完成任务
  3. 命令(Command)模式:我们可以用遥控器上的按钮控制电视,这里按钮就是具体的命令
  4. 职责链(Chain of Responsibility)模式:TAPD 中完成自己任务后流转给其他人,就是一个职责链
  5. 状态(State)模式:扫地机器人在有电的时候正常工作,快没电的时候自己去找充电桩,不同状态有不同行为
  6. 观察者(Observer)模式:微博上你关注的博主发了新消息,你也会收到通知
  7. 中介者(Mediator)模式:项目对接双方都有一个接口人,通过接口人完成对接,不必关注具体每个项目的参与人,接口人就是中介
  8. 迭代器(Iterator)模式:字典后面可以根据拼音检索也可以根据笔画检索,不同的检索方式就是迭代器
  9. 访问者(Visitor)模式:筷子可以用来吃饭,也可以用来开瓶盖,同一个东西可以有不同的用法。
  10. 备忘录(Memento)模式:常用的撤销、重做功能。
  11. 解释器(Interpreter)模式:SQL 语言可以看做是数据库数据的解释器

思考题 6:行为型模式对产品设计有何启发和影响?

从软件设计模式到产品设计模式

面向对象设计是软件工程的一大进步,开发人员得以用更加贴近生活的类比方式进行开发,但毕竟是和机器打交道,所以依然会有设计上的复杂度,这才有了各种设计模式。

不过既然面向对象源自生活中的概念抽象,那么关键点在于观察生活,让产品的功能设计更加贴近大家的认知,再结合这些认知总结出来的软件设计模式,就是一个完整的闭环了。

思考题汇总

这一部分可以用于最后的查漏补缺。

  1. 你知道什么是面向对象吗?
  2. 你知道正确运用设计模式对程序员来说有什么好处吗?
  3. 软件设计模式是面向机器的,迁移到面向用户的话,有哪些点是需要特别注意的?
  4. 创建型模式对产品设计有何启发和影响?
  5. 结构型模式对产品设计有何启发和影响?
  6. 行为型模式对产品设计有何启发和影响?
相关推荐
数据智能老司机3 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机4 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机4 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机4 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
使一颗心免于哀伤4 小时前
《设计模式之禅》笔记摘录 - 21.状态模式
笔记·设计模式
数据智能老司机1 天前
精通 Python 设计模式——创建型设计模式
python·设计模式·架构
数据智能老司机1 天前
精通 Python 设计模式——SOLID 原则
python·设计模式·架构
烛阴1 天前
【TS 设计模式完全指南】懒加载、缓存与权限控制:代理模式在 TypeScript 中的三大妙用
javascript·设计模式·typescript
李广坤1 天前
工厂模式
设计模式
幂简集成explinks2 天前
e签宝签署API更新实战:新增 signType 与 FDA 合规参数配置
后端·设计模式·开源