在分析问题时,我们提倡 abstraction, 那么 abstraction 究竟是什么意思呢?
从构词法上分析,abstract,是有 ab + stract 组成,前缀 ab- 的意思是 "away from", 词根 -stract- 的意思是 "draw",所以 abstract 合起来的意思就是 "draw away from",其实就是“拖走”,拖走什么呢?拖走和要解决的问题无关的不重要的枝节,这就是 abstract 的本质涵义。
编程上的 abstraction 也就是只关注和解决问题有关的,凡是与解决问题无关的,都不用去考虑。例如,编程一个骰子程序,我们只需要关注骰子有 6 个面,各个面的值分别是 1, 2, 3, 4, 5, 6. 每投掷一次骰子,得到的数字是 这 6 个数字从的一个。其它的骰子是用什么材质做成的,骰子是什么颜色的,骰子的大小,这些我们都要忽略掉。这样忽略无关紧要的细节,只留下对解决问题有用的部分,这就是 abstraction.