什么是抽象?
其实不要觉得它有多么的高大上,在我看来抽象就是一个过程,对事物的归类,从不同的事物中找出相同之处,然后归为一类。例如:从各种不同种类的狗找到相同之处 , 会汪汪叫,有四条腿,这样就抽象出了狗这样的对象。从各种不同种类的鸭子之间找相同之处,会呱呱叫,扁嘴巴,两条腿,脚趾之间有蹼,这样就抽象出了鸭子。是不是很简单?
但是在实际的项目,有很多的事物不会像鸭子、狗 这样已有一个大家公认的归类。这就需要程序员根据业务或根据事物的使用场景来归类事物,从中抽出对象。当然抽象的好不好跟对项目和业务的有很大的关系。随着对项目的理解的深入,抽出的对象也会发生变化。以前认为不同的对象或许会变得相同,而以前认为相同的对象又会分成不同的对象。而随着对项目的理解的继续深入,也许,又会将之前合并的对象分开,将之前分开对象又分开。因此抽象又跟抽象者的世界观有关,对事物的理解有关,所以抽象无止境。
为什么要抽象呢?是为了简化项目处理。一个项目要处理的事物成千上万,如果我们不归类,每个事物都有自己一套不同的处理方式,那得是多么复杂的系统。抽象的好不好直接决定一个项目的复杂度。因此一个程序员(面向对象程序语言的开发者)的好坏,跟抽象能力有很大的关系。