设计可扩展类与框架的最佳实践
1. 可扩展类的设计原则
在设计类时,我们需要考虑该类是否会被扩展。良好的类设计应遵循一定原则,以确保类既易于使用,又便于扩展。
1.1 Attr 类的设计分析
Attr 类是一个设计良好的类示例。它的字段是私有的,只能通过访问器方法访问,这保护了字段不被违反类契约的修改。同时,Attr 类为用户提供了清晰的接口,并与其他类解耦,以便未来可以更改其实现。
当考虑 ColorAttr 扩展 Attr 时,有人可能会想是否应将 Attr 的 name 和 value 字段设为受保护的,以便子类可以直接访问。但这样做并无益处,因为所有对这些字段的操作都可以通过 Attr 提供的公共方法完成。而且,将字段设为受保护会限制 Attr 未来的实现修改,因为子类可能依赖这些字段的存在、类型和直接访问。所以,Attr 当前的设计既适合扩展,也适合一般使用。
1.2 SingleLinkQueue 类的设计考虑
在单链表队列类 SingleLinkQueue 中,我们将 head 和 tail 字段设为受保护的。这是因为允许子类直接访问链表节点有很大的性能优势。例如,在 PriorityQueue 中重写 add 方法时,如果只能使用原始的 add 和 remove 方法,实现会很困难。此外,SingleLinkQueue 类的底层性质意味着我们不太担心锁定实现细节,因为它毕竟是队列的链表实现,变化空间不大。但如果是一个更通用的队列类,情况就不同了。
1.3 非最终类的两个接口
非最终类有两个接口:公共接口供使用该类的程序员使用,受保护接口供扩展该类的程序员
超级会员免费看
订阅专栏 解锁全文
170万+

被折叠的 条评论
为什么被折叠?



