抽象方法一般有两个分解decomposition和组合composition,这两种方法的方向正好相反,分解是将整体分解为部分,而组合是将部分组合成整体。

在软件架构设计和编码中,我们经常快速灵活使用这两种方法,比如将一个类分解为多个小类,将一个方法分解为多个方法,或者将几个类合成一个类一起调用,GoF设计模式中有不少模式是展示这两种方法的使用,比如桥模式或适配器模式是将几个类组合在一起调用。

分解和组合经常结合在一起使用,实际就是拆了装,装了拆,如同玩玩具一样,只不过每一次拆装都是有具体依据。

分解组合实际是一种虚拟重建方法,将现实世界中的模型使用抽象符号分解为一个个基本元素,然后再使用“关系”将它们组合在一起形成一个稳定的结构,形成结构后一个系统就具备了初步的形态。生命正在孕育之中。

软件架构的4+1视角模型简介一文对软件架构划分了五种视角,这五种视角针对不同的人群用户,一个好的落地的软件架构应该同时满足不同的利益要求者。4+1视图有:逻辑视图 开发视图 处理视图 物理视图,最后+1是场景。

逻辑视图是业务逻辑的分析,将功能性需求分解为类图,这里主要使用了面向对象的分解方法,也就是将需求分解为一个个对象类型,对象类型是最小的元素,通常我们使用UML的类图来表达,为什么要使用对象类型来表达分解后的元素呢?因为所谓对象是有边界的一种封装,人以群分,物以类聚,分门别类进行封装可以认为也是一种组合。

因此,类型是我们分解与组合的基本依据,类型理论是非常抽象和复杂,但是如果有丰富的实践经验,见识过各种不同类型的代码和抽象封装,就像见过各种不同类型的人以后,对人性的了解更加深刻一样。

处理视图是根据性能和扩展性要求进行分类的视图,低延迟和高吞吐量是处理架构的终极目标。开发视图是根据系统模块耦合进行分类的视图。物理视图是面向系统工程师的分类视图,落地为一个个实际物理存在的设备和网络。

场景视图是将这四种视图组合在一起使用,从而最终实现业务用例,模拟物理世界的业务需求实现。

以上主要是软件中的分解和组合使用,其实这两种方法适合更广泛的思维方式,分解思维能够让人不断研究细节,比如西医治病采取的是分解思维,肝脏有病就解剖肝脏,直至分解到细胞;而中医是采取组合方法,肝脏有病寻找与其有关系的肾脏进行补养,中医依据的五行水木金火土代表一种关系,肝脏代表木,而肾脏是水,水生木,也就是水能够滋养植物,所以,中医才采取补肾的方式治肝。

由此可见,类型与关系是分解与组合面对的主要元素,一个大的事物分解为不同类型的小事物,相同类型的事物可以合并成一组类型,分解时尽量切断各种关系,除非是高聚合的组成关系,也就是缺一不可的关系,这样才能孤立事物,研究事物;而组合是拉关系,通过关系将不同事物组装在一起。如果反映到数据库建模上,就是先建数据表,再找外键关系。

典型比如几何学是对直线 三角形等孤立图形进行研究,实际生活中是没有直线和三角形这个事物,就是有也是融入了复杂环境之中,分解思维能够让人有的放矢,集中人类的有限智慧从上帝手里抢夺一些自然的秘密。

举例:一张桌子。分解思维的人看到后,研究其长宽高以及材质和形状等个体特性,而注重关系的组合思维的人看到后,环顾四周,关注这张桌子的环境以及与其他事物有时间或空间的关系。

中国人这种注重关系的思维起因还可从老子道德经的“无以为用”中发现:三十幅共一毂,当其无,有车之用。埏埴以为器,当其无,有器之用。凿户牖以为室,当其无,有室之用。故有之以为利,无之以为用。
这段话意思是:三十根棍子做成的圆轱辘,只有忽视圆轱辘内部这种结构,从圆轱辘外部看到,才会发现它原来是可以做车的轮子这一用处。比如门窗,只有忽视其内部如何结构的构建,才会从外部想到用它在房间中。

所以,忽视个体内部结构,从外部关系组合才会发挥其用处,这是“无以为用”;而注重内部细节的“有”,这种分解方法无疑如同利器能有的放矢,因此这是“有以为利”,两者合并在一起就是“利用”。利用就是分解组合,中国古人的智慧还真是很厉害啊。

人的这种分解和组合思维能力也可通过机器学习算法进行模拟,再配合大数据进行训练,人工智能也就应运而生。

其实Hadoop的Map/reduce算法本身就是一个分解和组合的算法,通过Map进行分解到类型为Key的最小元素,而再通过Reduce基于类型和关系进行组合结果。

正是由于Map/reduce对大数据的分解组合能力,为机器学习人工智能的发展提供了基础可能。

机器学习流行算法一览列举了常见的机器学习算法。

Regression回归算法应该是一种组合方法,回归是关注变量之间关系的建模,利用模型预测误差测量进行反复提炼。聚类Clustering方法是按照类型组合。

人工神经网络干脆直接模拟人的神经网络,进行分类和回归,也就是分解和组合。

范畴理论总是鼓励我们从对象内部细节中转移开来(banq注:我之前帖子中的一张桌子理论,无才能用)在范畴理论中一个对象是一个抽象模糊的实体,你所有需要知道的只是它如何和其他对象交互(关系),它是怎么使用箭头和其他对象连接的,这就是为什么互联网引擎能够通过分析链入和链出的链接来排名网站一样。

看来中医的基础五行(金木水火土)也属于一种范畴方法学,因为五行让我们关注的是五个元素之间的关系,而不是元素自身的含义。

对分解和组合思维方法的理解相关推荐

  1. 战争科学论——认识和理解战争的科学基础和思维方法

    [胡晓峰:1973年中学毕业赴湖南农村插队当过三年知青,1976年回城后当过工人. 1977年考入国防科技大学系统工程与数学系信息系统工程专业学习,1981年底毕业后留校任教.后又攻读了研究生,198 ...

  2. 这50个思维方法,深刻改变了我的人生

    以下是改变我人生的50个观念. >>>> 这些都是我的指导原则,也是我的知识生活之光.这些思维方法能帮助你更好地思考,我希望它们能激发你的好奇心. 1.逆向思维.避免愚蠢比努力 ...

  3. 思维-思维方法:思维方法

    ylbtech-思维-思维方法:思维方法 思维方法是人们通过思维活动为了实现特定思维目的所凭借的途径.手段或办法,也就是思维过程中所运用的工具和手段.思维方法属于思维方式范畴,是思维方式的一个侧面,是 ...

  4. 排列组合思维导图_思维导图:进阶高效能人士的思维工具

    你记录信息的方式越贴近大脑自然的工作方式,你的大脑就越能高效地触发对关键信息的记忆和理解效率.--<思维导图>作者东尼·博赞 信息爆炸的时代,精简思考是进阶高效能人士的一项必备技能.思维导 ...

  5. 思维模型 | 顶级的思维方法是什么样的?

    在这个信息爆炸的时代,我们每个人每天都要浏览着数不清的信息.我们都想跟着潮流,跟上时代,不想被时代抛弃的时候,连再见都不会说一声,于是各种焦虑,各种想学习,各种刷公众号看文章,也可以把一些名词解释一通 ...

  6. 汇编语言典型例子详解_数据分析常用的7大思维方法详解

    今天老李继续给大家讲解数据分析经典的思维模型,上篇为大家介绍了目标思维.假设思维.溯源思维.逆向思维4个思维:数据分析必备7大经典模型详解!建议收藏!(上) 今天继续给大家介绍结构思维.演绎推理思维. ...

  7. Java初学者入门经典:面向对象的思维方法(其实同样非常适合C#的初学者)……非原创,作者忘了,非常抱歉...

    我是从学习Java编程开始接触OOP(面向对象编程),刚开始使用Java编写程序的时候感觉很别扭,因为我早以习惯用C来编写程序,很欣赏C的简洁性和高效性,喜欢C简练而表达能力丰富的风格,特别忍受不了J ...

  8. 数据分析常用的7大思维方法详解

    结构思维 很多人在分析的时候没有思路,不知道从何下手,这就是缺少结构化思维的表现 不如我们就直接看一下下面这个例子,看看大家是否具有结构化思维: 一家线下零售企业最近某个产品的销售额下降了,让你找一下 ...

  9. 技术人修炼之道阅读笔记(七)系统性思维方法

    在工作中有两种高手:一种是他们有成体系的逻辑, 术法清晰:另一种是他们悟性高. 对大多数人来说,前一种可借鉴性更高,但前提是要足够努力和坚持,塑造系统性思维并进行验证和升级. 一.什么是系统性思维? ...

最新文章

  1. 跨还是不跨?这是一个问题
  2. kotlin 协程异常处理机制颠覆三观
  3. Maximum Profit Aizu - ALDS1_1_D
  4. PyTorch 多目标跟踪
  5. Intellij idea创建maven项目并配置tomcat
  6. \045在字符串中输出为%
  7. bzoj2648/2716 kdtree
  8. MAMP 403 Forbidden You don't have permission to access / on this server.
  9. [ 物联网篇 ] ESP32 开发板测试亚马逊语音助手Alexa
  10. 五点差分法求解偏微分方程(PDE)
  11. alk In Web Security(安全世界观): Devleping a Secure Wesite
  12. 奶酪和奶酪碎的区别_与奶酪三星银河芽战斗大逃杀直播vs airpods
  13. 一分钟了解什么是代理ip和api接口
  14. 创意发明:基于stm32的微型掌上示波器 设计说明书电路及源代码
  15. QEMU 模拟启动 openEuler 的树莓派镜像
  16. 制作ESXI6.7启动盘
  17. 阿拉伯数字与中文数字的相互转换
  18. VS2017 下QT工程不能生成moc文件的解决方法
  19. 葡萄牙晋级世界杯决赛
  20. 系统配置:CentOS8时间同步

热门文章

  1. 3个月备战政治数学,你成功上岸了么?
  2. 实战 | 如何使用微搭低代码实现按条件过滤数据
  3. html图片左侧留白,HTML+CSS入门 如何解决图片跨域导致的截图空白
  4. 查看已知WiFi网络的密码
  5. 网站可行性报告范文_鄂州编写可行性报告公司2020范文格式
  6. spring boot 三种类型事物实现说明
  7. 请教求助,打开U盘显示,你当前无权访问该文件夹。
  8. 超过1M的网络动图添加到微信表情包
  9. “回复TD即可退订” 是真的吗?
  10. 解除同居关系时共同财产的分割