抽象是软件工程最强大的工具。我们用一个函数抽象一系列操作,用一个类抽象一组数据和行为,用一个接口抽象一种能力。它让我们能站在更高的层面思考,不必关心底层的复杂细节。但所有的抽象都或多或少是“泄漏”的。当你必须关心一个File对象底层占用了多少内存,或者一个数据库连接池的耗尽问题时,你就碰到了“抽象泄漏”。这提醒我,抽象是为了管理复杂度,而非消除它。一名优秀的工程师,既要善于运用抽象,也要有能力在抽象失效时,深入其底层看个究竟。