我有三个班级:
ZookeeperAccess
是界面AbstractZookeeperAccess
实现了ZookeeperAccess AbstractZookeeperAccess
第三课的名字是什么?
我使用ZookeeperAccessImpl
,但我认为这不是最好的名称,它提示只实现ZookeeperAccess
,但不会扩展AbstractZookeeperAccess
。
ps:ZookeeperAccessImpl
是现在唯一扩展AbstractZookeeperAccess
的类。
我使用抽象类来实现接口的一些代码,并为ZookeeperAccessImpl提供一些代码来进行扩展。
我再次更新问题。感谢
答案 0 :(得分:2)
你有AbstractZookeeperAccess
的事实意味着有多个子类来实现每种类型的ZookeeperAccess
,所以在子类名称前加上类型。
例如,给定:
interface ZookeeperAccess
AbstractZookeeperAccess implements ZookeeperAccess
你可能有
FullTimeZookeeperAccess extends AbstractZookeeperAccess
PartTimeZookeeperAccess extends AbstractZookeeperAccess
TemporaryZookeeperAccess extends AbstractZookeeperAccess
答案 1 :(得分:1)
该名称应说明实施的内容。这个实现可以通过扩展一个抽象类,委托给另一个......
来完成例如,在java.util
,LinkedList
和ArrayList
实施者List
和... AbstractList
扩展。
答案 2 :(得分:1)
为什么你认为类名需要暗示它扩展了抽象类?
对于适当的类名,我通常使用前缀来显示每个类的实现特定。
例如, EmployeeDao ,
的界面抽象类 BaseEmployeeDao
并且实现的名称可能是这样的:
答案 3 :(得分:1)
类名应清楚地说明类的作用,因此当您需要I
- 前缀(对于接口)或Impl
- 后缀时,您可能做错了。
接口名称应说明如何使用它(例如Map
)。如果一个类的主要目的是实现一个接口,它应该说一些关于实现的特定(例如HashMap
)。在这种情况下,所有变量和成员都应该声明为interface-type,并且该类仅用于实例化(除非具体实现很重要,不应该这样)
Impl
表明只有一个有意义的实现。如果是这样,为什么你需要一个界面呢? (可能的答案可能是:我想隐藏API用户的实现, Sun Oracle做了很多。)
如果您只想提供默认实施(因为您希望API用户能够提供更有效的解决方案),那么Default
,Simple
或Direct
- ZookeeperAccess
?
对于抽象类,我更喜欢使用Base
- 后缀(例如ZookeeperAccessBase
),它更适合大多数IDE的自动完成。