oop 甚至不是一种确切的模式,而是很多种模式的的统称。
所有方法和模式都是为了解决软件危机而出生的。
软件开发有很多问题:
1 我们不停写类似的代码,而无法重用这些代码。有个着名的比喻:软件工程师每次设计汽车的时候,都必须重新发明轮子。
回忆一下你开发过程中有多少次写下几乎一样的代码?比如我就写过不下20次几乎一抹一样按键检测的代码。
但是你为什么不把这些代码改成函数或者库呢? 因为这些东西不好改。每次使用的时候,代码看起来类似,然而却总有少许不同... 这很恼人。
2 我们的代码往往耦合度很高。同样有个着名的例子:一个程序有50个函数,他执行得非常好;然而一旦你修改其中一个函数,其他49个函数都需要做修改,这就是高耦合的后果。
人们从程序出现以来就在试图上述问题。出现了一种又一种的思想,oop也是其中之一。oop的核心是解决代码重用问题。他通过生成高内聚低耦合的类来实现这一点。
然而oop并不能保证这一切,oop提供了一些语法支持。你可以用oop的语法实现高内聚低耦合的类;但是怎么内聚、如何降低耦合,取决于你的智慧、经验和洞察力。这和过程式的设计模式是一样的。
这里有一些核心思想:
1 oop将数据和方法聚合到一起,形成类。你可以通过这个特性提高聚合度。
2 oop提出了接口思想。一个类对外表现为接口,而不管内部是什么结构。你可以用它提高聚合度、降低耦合。
3 oop提出了继承。这是重用代码的关键技术之一。(尽管继承可能是oop中最深奥的部分——何时继承何时复合是oop永远的话题之一)
要用好oop,首先得学会oop的语法,然后看一些书比如软件工程、设计模式等等。看完了之后,这些概念会留在脑海里。开始的时候oop肯定是设计不好的。但是什么时候你就会发现特别适合oop使用的地方,这样你才会明白oop怎么用。
本文作者: