把这两个概念放在一起,确实不是很工整。但对于热衷设计的我们,只要有用就行。
首先来解释这两个概念。
OO是什么?呵呵,可能大家会笑我,OO谁不知道?不要和我说什么封装/继承/多态!这些都是所谓的特性,我的问题是:OO到底在做什么呢?
我给大家打个比方,假设你是一个项目的项目经理。现在你手头上有一个任务,需要你去完成。你会怎么去做呢?
一个选择,是你自己完成所有任务。当然,如果你愿意夺取你所有的手下的机会的话。你是可以完成。这就是我们以往经常说的面向过程(OP)。你知道所有你该做的,并且你去做了。
当然,你慢慢会发现,你的手下可以帮助你解决一些问题。于是你试图让他们去执行你安排给他们的任务。不过,你并没有脱离OP的阶段,所有的工作都是你在安排,你在策划,你在考虑。你只是使用了一些现成的库来帮助你工作。
随着时间的推移,你的手下开始慢慢能顶替你的工作。你开始将任务直接交给几个手下,告诉他们你想要的结果,让他们放手去干。过程中进行适当的监督和协调。恭喜你,你在采用面向对象了。你不再关心实现任务的具体细节。你关注的是手下工作要开心,调节他的工作状态,适当给些鼓励,适当给些压力,适当给些激励。这就是OO。