登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 394|回复: 0

面向对象的产物观(3):组合的奥秘

[复制链接]

993

主题

993

帖子

0

现金

黑狼菜鸟

Rank: 1

积分
0
发表于 2020-12-24 03:16:59 | 显示全部楼层 |阅读模式 来自 香港

原标题:面向对象的产物观(3):组合的奥秘

编辑导语:产物的构建是一个不小的话题,在前两篇文章中,作者为我们分享了关于面向对象的产物观中的抽象头脑,以及从横向和纵向两个方面分解的艺术。本日这篇文章中,作者为我们分享了产物构建的第三层:组合层,发表了组合有什么奥秘。

OPR790zoHh6c968G.jpg

我们来到了产物构建的第三层:组合层,接下来的篇幅们将一起去探究组合。

lQ0t8CSQ07sND812.jpg

从组合开始,我们将开始探究HOW的题目,去相识怎样去构建一款产物。

一、什么是组合

在抽象层我们了获取产物愿景,又在分解层将愿景分解成了诸多的功能。那么在组合层,我们要做的事变就是讲诸多的功能通过肯定的方式组装起来。

分解时拆分出了无数的零件,组合则是将这些零件组合成为一个可以正常运转的呆板。组合层决定了一个产物的详细布局,一个好的布局可以像摩天大厦一样楼高百丈,直插云霄;一个坏的布局就像农村土楼,最多3层,再往上就风雨飘摇了。

二、组合的依据

我们依赖什么样的依据来将零件组合成为正常运转的呆板呢?依据的是用例和场景。

为什么是他们?产物一系列相干联的功能的聚集。用户利用产物是一个恒久的过程,利用的过程中一定会涉及到多个场景以及多个差别的用例。因此根据用户利用产物时的用例以及场景举行组合才是一个产物布局的正常组合方式。

三、组合的流程

组合的过程分为:搭架子和装组件。

1. 搭架子

架子就是一个产物最根本的框架,由产物的”一级模块“构成。所谓一级模块与用例相互关联,现实上就是将用例抽象为一个简朴的功能概念。好比贸易列表,购物车,个人中央等。

搭架子就是将全部的一级模块举行分列组合,架子决定了你的产物最直观的体现形态以及产物的界限。

在搭架子时要留意按照功能分类来计划一级模块。一样平常来说底子功能单独一类;焦点功能单独一类,同时也可以附带一些须要功能与辅助功能;须要功能一样平常与焦点功能归并为一类,偶然也可以单独成一类。

一个好的架子必要满意如下条件:易用性、稳固性和扩展性。

  • 易用性:一级模块必要与用例完全相干,每一个一级模块都是一个完备用例的抽象。
  • 稳固性:一个好的底层架构可以在恒久利用,在将来的很长一段时间也不必要做出大的修改。任何一个对底层架构的改动,都必要用户花大量时间去顺应,对于产物的用户体验伤害相称大。
  • 扩展性:这一条与稳固性痛痒相关,现实上一个稳固的架构险些等同于一个扩展性好的架构。任何一个产物都不大概是一成稳定的,在将来的迭代中肯定会对增长大概淘汰某些功能,一个扩展性好的架构就可以很好的满意如许的要求。

那么这个市面上有没有可以或许完善满意我全部要求的架构呢?有!就是各人正在利用的微信。

he2CFf3bCqF6wY8y.jpg

7年未变的完善架构

如上图,微信的一级模块从12年开始就不停是以上四大金刚,除了在13年把朋侪圈更换为发现之后,已经凌驾7年没有任何变革。

在这7年间,微信的功能已经发生了天翻地覆般的巨大变革,由一个简朴的谈天工具进化成了影响人们生存方方面面的超等APP。但是底层架构依然是这四大金刚,而且在可预见的将来,这四大金刚依然还将死死占据着微信的底部。

2. 装组件

搭完架子,就是装组件了。所谓装组件,将二级模块与一级模块关联起来。

就像组装电脑一样,机箱是一级功能的聚集体、CPU、主板、显卡、电源、硬盘这些硬件就是二级模块,组装电脑就是将硬件安装到机箱指定的位置上。

oah61m7XmhyDybXD.jpg

就像主板上面有铜线,二极管等多个差别的零件一样。二级模块也是有多个差别用途的小功能组合而成。

装组件实质上就是将浩繁相互关联的小功能组合成为一个大的功能,然后再将诸多的大功能组合到底层架构上。

每一个小功能都对应着一个详细的原子态场景,然后将相干联的功能(场景)举行组合成为一个二级模块,之后将这些二级模块组装到一级模块上,就形成了终极的产物布局。

四、组合的原则 1. 第一原则

组合的第一原则:组合的功能肯定要符合人类的认知。就像微波炉上不能装菜刀一样,功能的组合必须符合人类对实际的认知,微波炉是很好的功能,菜刀也很好,但是如许两个很好的功能组合到一起就是劫难。

以是,符合认知是组合最紧张的原则。

2. 第二原则

组合的第二原则:高内聚,低耦合。这个概念来自于软件工程,是判定软件计划优劣的尺度。雷同的功能只管的构成独立的模块,差别的模块之间只管淘汰关联,模块之间通过毗连举行信息传输。

如许做的利益就是可以明显提拔软件的复用性和可扩展性。

什么是软件的复用性?

就像一颗独立的螺丝钉,它可以拧到任何硬件上而不会对谁人硬件产生影响。复用性就是指独立的软件模块就像螺丝钉一样,可以安装到恣意一个步伐中也都可以正常利用。

可扩展性就更好明白了,当你的软件的各个部门都是独立存在不会相互影响时,那么你增长大概删减某个功能都不会对软件已有的功能造成影响,就像我可以随时在电脑上加显卡,换硬盘。

那么高内聚,低耦合可以或许怎样运用在产物构建中呢?在举行产物构建时,必要努力的找到每一个完备的场景闭环。

多少个场景闭环就可以构成用例,现实上用例就是诸多闭环构成的一个大闭环。终极将这些闭环对应的功能组装为独立的模块,然后将这些模块逐一组装,形成末了的产物。

如上文形貌的那样,组合的目的是将分解出来的功能按照规则举行分列、组合。

终极合成一个完备的,可用的产物布局。假如组合没有做好,将来产物的架构将很轻易发生剧烈变更,会产物体验的连续性造成很大伤害。以是,我们肯定要器重组合,做好组合。

我们终于来到了HOW的阶段,组合是HOW的第一层,由于我本人的状态缘故原由,赶着这一篇没有完全说明确我想要讲的内容,请各人担待一下。

将来我们还将继承先容《毗连》和《具象化》,敬请等待。

本文由 @木道人 原创发布于大家都是产物司理,未经允许,克制转载。

题图来自Unsplash,基于 CC0 协议返回搜狐,检察更多

责任编辑:





上一篇:高效“炼丹”必备技能:一文实现深度学习数学原理入门,另有吴恩达老师亲授 ...
下一篇:三年助力不停探索华为与围甲打造全新双赢局面
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-5-19 23:52 , Processed in 0.168505 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表