各种书籍写的比较抽象,偶然看了个例子,更能直接的解释这个区别:
例子 : 把大象放进冰箱:
面向过程: 针对的是这件事情,就是要搞定这个事情,具体步骤入下:
1. 把冰箱门打开;
2. 把大象放进去;
3. 把冰箱门关上;
如果是面向过程的思维,直接写一个接口函数即可实现这个过程;
面向对象: 这件事所关联的事物: 人,大象,冰箱;
人
{
打开(冰箱){冰箱.开门()}
操作(大象){大象.进入(冰箱)}
关门(冰箱){冰箱.关门()}
}
大象
{
进入(冰箱){}
}
冰箱
{
开门(){};
关门(){};
}
////////////////////////////////////////////////////////////////////////////////////
有人会感觉,过程我一个接口搞定,面向对象写这么多, 但是换个问题,如果现在又来了个需求,要求放入冰箱的是猴子了,面向对象仅仅是加入一个猴子的类即可,整个流程不需要做任何修改,但是如果是面向过程,里面要添加一个逻辑的判断,后续代码的维护会越来越困难;
这个就是面向对象的好处,关注对象(人、大象、冰箱) ,面向过程关注于过程(如何解决这个事情);
面向对象思想的转变:
1. 先找一下所需功能的对象是否存在;
2. 如果不存在,就创建一个这样的对象;
3. 简化开发,提高代码的复用性;