面向对象编程的弊端是什么?
当前很多资料都在讲述面向对象的优点,可是在软件开发或者大型软件项目中,面向对象却带来了巨大的类关系设计开销,但具体有何弊端却没有详尽的介绍。
invalids
弊端是,没有人还记得面向对象原本要解决的问题是什么。
1、面向对象原本要解决什么(或者说有什么优良特性)
似乎很简单,但实际又很不简单:面向对象三要素封装、继承、多态
(警告:事实上,从业界如此总结出这面向对象三要素的一刹那开始,就已经开始犯错了!)
封装:封装的意义,在于明确标识出会访问某个数据结构(用面向对象的术语来说就是类成员变量)的所有接口。
有了封装,就可以明确区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者;而外部调用者也可以知道自己不可以碰哪里。这就提供一个良好的合作基础——或者说,只要接口这个基础约定不变,则代码改变不足为虑。
继承+多态:继承和多态必须一起说。一旦割裂,就说明理解上已经误入歧途了。
先说继承:继承同时具有两种含义:其一是继承基类的方法,并做出自己的扩展——号称解决了代码重用问题;其二是声明某个子类兼容于某基类(或者说,接口上完全兼容于基类),外部调用者可无需北京哪里治疗白癜风的好白癜风初期怎么治疗