OOP的基本原则:
l 开闭原则:开扩展闭修改。
Ø 一个变化点应封装在一个类中,而不是散落在很多角落。同一种可变形的不同表象应该表现在同一集成等级结构中的具体子类。(此处需要纠正的是集成不是用来处理一般对象到特殊对象的途径,而是一种封装变化点的方法。)
Ø 一个类只封装一个变化但,而不是杂合其余变化点。(这一点表现出来就是一般集成只需要两层结构,因为超过的话基本就表明基类中已经包含了超过一个变化点。(当然非绝对,有时为了解决方案的更易于管理,我们会在基类中封装超过一个变化点,例如有时候我们会用人这个基类中封装国籍、性别两个变化点))
l 依赖倒转原则:依赖于抽象,而非具体。具体起来说就是依赖接口而不是实现。
OOP目标:重用性、灵活性和扩展性。
为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。
OOP 主要有以下的概念和组件:
l 组件 数据和功能一起在运行着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和结构化的基础。(面向服务,SOA)
l 抽象性 程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。(干正确的事情)
l 封装 也叫做信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态。每类组件都提供了一个与其它组件联系的接口,并规定了其它组件进行调用的方法。 (可控)
l 多态性 组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果得依据实际调用的类型。(正确的干事情)
l 继承性 允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性。典型地来说就是用类来对组件进行分组,而且还可以定义新类为现存的类的扩展,这样就可以将类组织成树形或网状结构,这体现了动作的通用性。
OOP 的优点:
l 开发效率提高(重用性,活字印刷术)
l 便于维护(与问题域映射关系清楚)
l 容易扩展(接口编程)。
l 此处看到很多论坛上说的质量高,这个笔者不敢苟同,因为这个标准是什么,如果是性能,显然质量不高,如果是只维护扩展方面,不免与上面重复。
l 降低成本,此处指的人的上面,因为上面已经提到了开发效率,没必要重复。因为面向对象可以分解复杂的事物成简单的事物,而且对于性能要求一般不是bug型的,所以是个人培训下都能简单编码。(此处主要得益于针对接口编程的理念)
l 便于开发任务部署。因为面向对象的思想已经决定了一个项目可以由很多子组件组装起来。
OOP 缺点:
l 性能的流失,包括时间和空间(老话了,不过不是致命点,可以不断改善底层,而且随着硬件寻址能力的增强这方面的问题除非时间或者空间极端条件下,一般不用考虑。)
l 整体设计容易出现尾大不掉。对OOA要求颇高,若缺乏整体规划,很容易造成结构不合理,各部分关系失调。
l 局限到具体业务,无法从更高层面科学提取分析。
l 环境支持限制(这一点对于很多老IT人员才比较明显,对于近几年进入的人说,可能看着都没感觉,因为现在面向对象大行其道,整BIOS以及C的人已经很少了。)