版权声明:From Jomly Kellenda Nakamura https://blog.csdn.net/sinat_23030553/article/details/83409480
程序员:What When Where How Who Why;
架构师:What Why Where When Who How;
设计师:What Who Why How When Where。
面向对象What:
面向对象思想是相对于面向过程思想而言的,不拘泥于实现过程,不面对拆分的细节,直接面对一个整体,就是面向对象。
把一组有着共同行为模式的人、共同属性特征的物、共同步骤流程的事归纳抽象为类。把类分解具象,就可以得到对象。
对象间进行通信的构造被称为消息。类有父类子类,子类继承父类共享父类方法以补充自身功能,子类覆盖父类的接口以适应子类业务的需要。
重写是重写父类的方法;重载是对同名函数重新装载参数。
静态成员为不同的对象之间,提供数据共享的渠道。这些数据可读可修改,且只能被静态方法访问。
静态类型和静态绑定在编译后已确定,动态类型和动态绑定在运行后才能确定,动态绑定支持多态。
面向对象When:
当团队进行项目开发时,会有分工的情况。各个模块的开发分包独立,在集成时控制层针对业务情况分别调用,调用模块不需要介入被调用模块的细节。这体现了面向对象的封装和接口的特性。
使得生产者和使用者的角色边界清晰明确,提高工作效率,便于测试和纠错。
面向对象Where:
同一对象在不同场景下对于同一消息,或是同一对象在同一场景下对不同消息,可能存在不同的反应。不同的反应意味着对象会有不同的功能操作和属性体现。这就是多态。
原子化后单一职责的不同的功能代码组,应该被放置到不同的模块中,接口做好隔离,避免代码交叉感染。
被调用的接口应尽可能支持多地组合重用,节省开发成本。
总结为:多态、精细、少继承、多组合。
面向对象How:
为了确定问题域,理解问题,支持分析,必须做到五个步骤:认定对象、组织对象、说明关系、确定功能、定义属性。
职责单一、接口隔离、组合复用、宁拆分勿杂糅;
对扩展开放、对修改封闭;
子类可以替换父类,便于更新;
依赖抽象,面向接口编程,避免使用者陷入生产细节;
各模块各自为政。
面向对象Why:
当今的软件项目越来越庞大,需要团队开发才能完成。整体采用面向过程的开发方式,不仅会让开发周期变长、代码冗余度增加,还难以管理团队、难以评估成员间工作情况,也难以测试并适应需求的变更。总的来说,就是开发模式理念不再适用了。
这让我们反求诸己,什么样的理念才适合当前的情况,又符合人的认知特性和团队的发展特性呢?面向对象很可能是我们的答案。
人的认知模式从婴儿身上可见一斑,婴儿在眼前的混沌中伸出双手,拿起物品完成了分解对象的过程。该行为多次重复,使得孩子认知了物体的外在表征、内在属性、功能特点、与其他物品的联系并掌握使用方法,甚至是修改、替换和制造方法,完成了对象抽象为类的过程;长期频繁使用的知识和能力,形成条件反射,这启发了静态成员和静态绑定概念的出现;而语言语法可对天地万物描述的灵活性也启发了动态绑定的出现;继承来源于亲子家族关系的模式;多态描述了人与人、人与事、人与物之间关系的切换;封装更是对现代社会中家庭、家族、公司、团体甚至党派等功能组合体的精确描述。可见面向对象思想的出现早已经奠定了生物学和社会学的基础。
从当前的工业模式和人力资源管理模式来说,三个问题急需解决:
一、如何适应工厂流水线模式和分包模式以实现集约化(一人一时做一事)生产管理?二、如何利用好已有的工业基础架构已节省开发资源?三、如何在多个不同需求但流程相似的场景下复用已有的功能,并分别给出需要的答案?
所以,面向对象基于继承、封装和多态三个方向的探索,得以建立了完整的思想体系,为上述三个问题提供了答案。