9.4 将通用代码和特殊用途代码分开
如果一个模块包含一个可以用于多个不同目的的机制,那么它应该只提供一个通用的机制。它不应该包括将该机制用于某一特定用途的代码,也不应该包含其他通用机制。与通用机制相关的特殊用途的代码通常应该放在不同的模块中(通常是与特殊用途相关的模块)。第6章中关于GUI编辑器的讨论说明了这一原则:最好的设计是文本类提供通用的文本操作,而用户界面的特殊操作(如删除选中的区域)则在用户界面模块中实现。这种方法消除了早期设计中存在的信息泄露和额外的接口,在早期设计中,专门的用户界面操作是在文本类中实现的。
一般来说,一个系统的较低层往往更具有通用性,而较高层则更常用于特殊用途。例如,一个应用程序的最顶层由完全针对该应用程序的功能组成。将特殊用途的代码与通用代码分开的方法是将特殊用途的代码往上拉,拉到较高的层中,而将较低的层留给通用代码。当你遇到一个类在同一个抽象中同时包含了通用功能和特殊功能时,看看这个类是否可以分成两个类,一个包含通用功能,另一个被放置在上面一层,提供特殊功能。
Last updated