面向对象的优缺点(关于缺点部分,希望大家补充,个人实力实在不够,无法提出更深层次的缺点)
2010-05-26 11:20
274 查看
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的人已经很少了。)
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的人已经很少了。)
相关文章推荐
- javascript内置对象属性及方法(收集)希望大家补充
- 关于Android焦点的个人理解,希望大家来指正。
- 一个关于指针的问题,问题很简单,但容易出错,希望大家提出好的解决方法~~~
- 关于JAVA面向对象基础整理以及个人的理解(适合初学者阅读)
- 个人编程思想理解的片段(主要是面向对象的,参考了许多人的观点,还不成熟,没形成系统,请大家多指点)
- 个人对于微信公众平台开发的一些整理,后续会有补充,欢迎大家给予指正。一、关于如何获取微信公众原始号
- 关于pythoh面向过程开发人员三步转面向对象的补充,再加一步,四步走战略。转面向对象也可以有固定公式。
- Atitit 面向对象弊端与问题 坏处 缺点
- JavaSE复习之二 基础知识:面向对象 补充(2)
- php部分---面向对象静态、抽象类、oop接口、加载类、魔术方法、关键字。
- 把遇到过的对.Net线程的一些问题和误解集中起来和大家分享,也希望大家能一起补充,热烈欢迎讨论(引)
- 面向对象部分_202
- 关于2016 x86服务器虚拟化中对于桌面虚拟化部分的个人理解
- [导入]发布本人整理的面试问题大全,为准备找工作的同行们尽一份力!希望大家多补充或回答!
- 最近总结关于找iOS的工作的体会,大家可以补充
- 自己翻译的书(关于ASP.NET),希望对大家有帮助 (十二)
- java面向对象学习日志(上半部分)
- 关于spring集合对象的补充
- 《程序员面试宝典》精华 面向对象部分