还原论|从复杂的模型,到简洁的思维( 二 )


百度百科上对“类”的第一解释是一种编程术语,即一种用户定义的引用数据类型。用户是如何进行“定义”的?它正是人类在现实生活中,通过语言对一类具有共同特征事物的抽象。
比如小红和小明,他们的共性是人,那么他们可以被归到“人”这个类中。
衬衫和裤子,他们的共性是衣服,那么他们可以被归到“衣服”这个类中。
在编程的世界里,“实现一个类“的意思,就是把这个类(事物or行为)用代码写出来,这个过程本身就是对“类”深刻理解的过程。
从这个角度来看,编程中的“类”的特性,和我们现实世界中“类”的特性是相通的。编程中另外一个概念“领域模型”,即“对领域内的概念类或现实世界中对象的可视化表示”,恰恰也和我们说的模型思想相吻合。
当然本文仅仅借用编程中的概念来做分析,请程序员大大们不要嫌弃它太土太简单。
编程中“类”的特性:
编程中“类”的使用,是为了避免重复创造函数(方法),提高代码的复用性和扩展性,从而让系统建设更有序、更简单、更安全。
编程中对“类”的特性有几个总结。一是封装性,二是继承性,三是多态性。
还原论|从复杂的模型,到简洁的思维
文章插图
分别怎么去理解呢?
1. 封装性:类是一个有机的整体封装性的表现是将数据和操作封装为一个模块化的有机整体,给外部人员提供一个接口,从而能够增加安全性和简化编程。
在创建一个类时,需要考虑其内部实现细节;当封装后使用类时,不需要关心其实现细节,主要使用它的接口即可。
还原论|从复杂的模型,到简洁的思维
文章插图
应用在现实场景中,比如公司将部分无法内部消化的项目进行外包,就相当于使用一个可封装的类,当找到了合适的外包,我们就不用过于关心对方是怎么实现的,只要关心他们能不能帮我达成某个目标即可。
再如职场中的常用黑话SOP(标准操作程序),就是体现“封装性”的典型案例。将某类工作的操作流程量化并以统一的格式描述出来,让原本比较困难、风险较高的工作变得有方法可循,并且即便员工离职了,新来的人也可以通过对接SOP接口快速跟上执行,他只要在原有的SOP基础上进行调整优化,而不必发明新的轮子。
但假若这个SOP设计的极其复杂,缺乏可操作性,那么就说明SOP没有抓住该类工作的关键,没有经过深入的思考抽象出一个有机的整体。这才是实际工作中最难的问题,弄得不好就是代码越写越复杂,整个系统越来越庞杂混乱,徒增人力成本。
2. 继承性:类具有层级结构继承性揭示了“类”的内部结构。
继承发生在两个类之间:子类和父类。子类具有父类的各种属性和方法,构建子类的时候可以调取父类,而不需要再次编写相同的代码。
其核心思想是抽象提取共性。
当我们已经认识了“动物”这个父类,那么在见到某个动物的时候,即便不知道它的名字,我们也能知道它是一个动物,因为它继承了父类“动物”的属性特征:能自主运动。
还原论|从复杂的模型,到简洁的思维
文章插图
所以我们在认识某个事物或者行为的时候,最重要的是,搞清楚对应的父类是什么,父类的父类又是什么,通俗说,就是刨根问底,找到问题的根源。
3. 多态性:每个子类都具有特殊性多态性是建立在继承性的基础上的,如果没有层级结构,也就不存在一个父类下的多个不同的子类状态。
多态性告诉我们子类既有父类的一般性,也有自己的特殊性,从而让整个系统不断进化。