抽象在程序设计中是有用的,而且会用的人知道它有大用。而许多初学者(包括我)一开始觉得它并无实际用途(指抽象类)。
后来,我知道了设计模式这个东西才恍然大悟又惊叹此智慧高深,设计模式一开始并不是程序界的产品,它是建筑界的大师提出的。
抽象是什么:抽象是对一个集合(种类)的对象特征的定义,与具体相对。
举个例子吧:在世界上你可以找到很多动物,但你却找不到动物这个东西。
这关系到抽象的两个特性:1,概括性 2,无实例。上面的例子中每一个动物(比如猫)就是一个对象,而动物这个名词就是抽象。动物概括了所有由动物细胞组成的生命体的集合。
那么,你会觉得动物这个词没用吗?又或者不要它的概括性每次要说到动物时就说一大段定义;又或者全部实例为抽象把所有动物都改名叫动物?
依此看来抽象是重要的,当然上面乱七八糟的似乎和程序没有关系。那么在程序中如何应用抽象呢?
一个好的程序员习惯对抽象进行编程,因为这符合“知道最少”原则和“替换”原则。
关于“知道最少”这又要说到程序的耦合性了。在程序里若类与类之间联系过于紧密我们称之为强耦合,就是“知道太多”,模块(类)之间互相知道的越多耦合就越强,耦合越强越不利于维护(这又是一大门学问),把类做得让别人(其它对象)知道最少这才是优秀的代码(黑盒编程)。
关于“替换”这又要说到继承和里氏代换的知识了。应用场景:项目经理对项目的要求是改了又改,就算是高智商的程序员也是被此烦得不行,虽然说领了工资就要工作,但是重复的事却不应重复去做(烦)。
“里氏代换”中规定子类可以完全替代父类去干事情,而对其它代码完全不需要修改。有人说这和抽象有什么关系,在程序设计里抽象类总是父类。习惯对抽象(接口)编程的程序员是好的程序员,在调用抽象或接口时,实现抽象(接口)的类可以被其它同样实现替换,而不必知道具体是什么东西。
唉唉唉唉,我也不知道自己写了什么,鄙人只希望作为个引子希望大家学到更多。
网友评论