# 7.6 小结

添加到系统中的每个设计基础结构，例如接口、参数、函数、类或定义，都会增加复杂性，因为开发人员必须了解这个元素。为了使一个元素能够在对抗复杂性方面提供净增益，它必须消除一些在没有这个设计元素的情况下会出现的复杂性。否则，你最好在没有该特定元素的情况下实现系统。例如，一个类可以通过封装功能来降低复杂性，这样类的用户就不需要知道它。

“不同的层，不同的抽象”的规则正是这种思想的一个应用：如果不同的层有相同的抽象，比如传递式方法或装饰器，那么很有可能它们没有提供足够的收益来弥补它们表示的额外基础设施。类似地，传递式参数要求几个方法中的每一个都知道它们的存在（这增加了复杂性），而没有贡献额外的功能。
