面向对象的产品观(3):组合的奥秘
编辑导语:产品的构建是一个不小的话题,在前两篇文章中,作者为我们分享了关于面向对象的产品观中的抽象思维,以及从横向和纵向两个方面分解的艺术。今天这篇文章中,作者为我们分享了产品构建的第三层:组合层,揭晓了组合有什么奥秘。
我们来到了产品构建的第三层:组合层,接下来的篇幅们将一起去探讨组合。
从组合开始,我们将开始探讨HOW的问题,去了解怎样去构建一款产品。
一、什么是组合
在抽象层我们了获取产品愿景,又在分解层将愿景分解成了诸多的功能。那么在组合层,我们要做的事情就是讲诸多的功能通过一定的方式组装起来。
分解时拆分出了无数的零件,组合则是将这些零件组合成为一个可以正常运转的机器。组合层决定了一个产品的具体结构,一个好的结构可以像摩天大厦一样楼高百丈,直插云霄;一个坏的结构就像农村土楼,最多3层,再往上就摇摇欲坠了。
二、组合的依据
我们依靠什么样的依据来将零件组合成为正常运转的机器呢?依据的是用例和场景。
为什么是他们?产品一系列相关联的功能的集合。用户使用产品是一个长期的过程,使用的过程中必然会涉及到多个场景以及多个不同的用例。因此根据用户使用产品时的用例以及场景进行组合才是一个产品结构的正常组合方式。
三、组合的流程
组合的过程分为:搭架子和装组件。
1. 搭架子
架子就是一个产品最基本的框架,由产品的”一级模块“组成。所谓一级模块与用例互相关联,实际上就是将用例抽象为一个简单的功能概念。比如商业列表,购物车,个人中心等。
搭架子就是将所有的一级模块进行排列组合,架子决定了你的产品最直观的表现形态以及产品的边界。
在搭架子时要注意按照功能分类来设计一级模块。一般来说基础功能单独一类;核心功能单独一类,同时也可以附带一些必要功能与辅助功能;必要功能一般与核心功能合并为一类,有时也可以单独成一类。
一个好的架子需要满足如下条件:易用性、稳定性和扩展性。
易用性:一级模块需要与用例完全相关,每一个一级模块都是一个完整用例的抽象。 稳定性:一个好的底层架构可以在长期使用,在未来的很长一段时间也不需要做出大的修改。任何一个对底层架构的改动,都需要用户花大量时间去适应,对于产品的用户体验伤害相当大。 扩展性:这一条与稳定性息息相关,实际上一个稳定的架构几乎等同于一个扩展性好的架构。任何一个产品都不可能是一成不变的,在未来的迭代中一定会对增加或者减少某些功能,一个扩展性好的架构就可以很好的满足这样的要求。那么这个市面上有没有能够完美满足我所有要求的架构呢?有!就是大家正在使用的微信。
7年未变的完美架构
如上图,微信的一级模块从12年开始就一直是以上四大金刚,除了在13年把朋友圈替换为发现之后,已经超过7年没有任何变化。
在这7年间,微信的功能已经发生了天翻地覆般的巨大变化,由一个简单的聊天工具进化成了影响人们生活方方面面的超级APP。但是底层架构依然是这四大金刚,而且在可预见的未来,这四大金刚依然还将死死占据着微信的底部。
2. 装组件
搭完架子,就是装组件了。所谓装组件,将二级模块与一级模块关联起来。
就像组装电脑一样,机箱是一级功能的集合体、CPU、主板、显卡、电源、硬盘这些硬件就是二级模块,组装电脑就是将硬件安装到机箱指定的位置上。
就像主板上面有铜线,二极管等多个不同的零件一样。二级模块也是有多个不同用途的小功能组合而成。
装组件实质上就是将众多互相关联的小功能组合成为一个大的功能,然后再将诸多的大功能组合到底层架构上。
每一个小功能都对应着一个具体的原子态场景,然后将相关联的功能(场景)进行组合成为一个二级模块,之后将这些二级模块组装到一级模块上,就形成了最终的产品结构。
四、组合的原则
1. 第一原则
组合的第一原则:组合的功能一定要符合人类的认知。就像微波炉上不能装菜刀一样,功能的组合必须符合人类对现实的认知,微波炉是很好的功能,菜刀也很好,但是这样两个很好的功能组合到一起就是灾难。
所以,符合认知是组合最重要的原则。
2. 第二原则
组合的第二原则:高内聚,低耦合。这个概念来自于软件工程,是判断软件设计好坏的标准。类似的功能尽量的组成独立的模块,不同的模块之间尽量减少关联,模块之间通过连接进行信息传输。
这样做的好处就是可以显著提升软件的复用性和可扩展性。
什么是软件的复用性?
就像一颗独立的螺丝钉,它可以拧到任何硬件上而不会对那个硬件产生影响。复用性就是指独立的软件模块就像螺丝钉一样,可以安装到任意一个程序中也都可以正常使用。
可扩展性就更好理解了,当你的软件的各个部分都是独立存在不会相互影响时,那么你增加或者删减某个功能都不会对软件已有的功能造成影响,就像我可以随时在电脑上加显卡,换硬盘。
那么高内聚,低耦合能够如何运用在产品构建中呢?在进行产品构建时,需要尽力的找到每一个完整的场景闭环。
若干个场景闭环就可以组成用例,实际上用例就是诸多闭环组成的一个大闭环。最终将这些闭环对应的功能组装为独立的模块,然后将这些模块一一组装,形成最后的产品。
如上文描述的那样,组合的目标是将分解出来的功能按照规则进行排列、组合。
最终合成一个完整的,可用的产品结构。如果组合没有做好,未来产品的架构将很容易发生剧烈变动,会产品体验的延续性造成很大伤害。所以,我们一定要重视组合,做好组合。
我们终于来到了HOW的阶段,组合是HOW的第一层,因为我本人的状态原因,赶着这一篇没有完全说明白我想要讲的内容,请大家担待一下。
未来我们还将继续介绍《连接》和《具象化》,敬请期待。
本文由 @木道人 原创发布于人人都是产品经理,未经许可,禁止转载。
题图来自Unsplash,基于 CC0 协议