在第10.5节讨论关于可见性的详细设计的指导。他说:
只能使语义上合适的操作可见。
本指南 旨在避免阶级之间的病态耦合。例如, 假设一个类正在使用容器类。应该是这样的 GetLeft()和GetRight()或Prev()和Next()?第一对使 实现可见(二叉树)而后一对 捕获基本语义(有序列表)。
我无法理解他在这里想说的是什么,尤其是最后一行。
有人可以阐述他的观点吗?
答案 0 :(得分:2)
嗯,它有点夸张。 GetLeft
和-Right
在其名称中包含从内部实现派生为二叉树的方向。因此内部数据结构在界面中是可见的。而事实并非如此。最好将这些知识保存在内部有几个原因。首先,外部世界一定不关心事情是如何实施的。其次,如果您决定以不同的方式实现它(例如通过环形缓冲区),如果到达缓冲区的右边界,则GetRight
在内部视图中将是奇数。 Prev
和Next
明确针对运营的业务/外部使用方面。