这里没有“一个”正确答案。命名是相当主观的,但最重要的是它应该在整个代码库中保持一致。我只想为你添加更多(@fge的答案)更多的选择:
- 
使接口更加通用。
EmployeeRepository implements Repository
DocumentMappingService implements MappingService
 
- 
将单个实现称为“默认值”。
DefaultEmployeeRepository implements EmployeeRepository
DefaultDocumentMappingService implements DocumentMappingService
 
- 
将基本实现(如果,有时扩展)称为“支持”。
EmployeeRepositorySupport implements EmployeeRepository
DocumentMappingServiceSupport implements DocumentMappingService
 
在使用Spring框架时,我经常遇到这些命名约定。
编辑:回应用户对或约定的评论。
nyxz-BaseBase-就像我之前说的,命名是主观的,使用这样的命名法没有错。但是,就个人而言,我不喜欢使用它。原因如下:Base
如果您的实现主要直接使用,那么实例化类的代码会给人留下破坏OOP层次结构的印象。也许应该实例化一个特定的派生类。
 
如果你的实现大部分是从扩展而来的,那么这个词在某种程度上就变得多余了。你正在从它扩展,所以,当然,它是一个基类。嗯!Base
 
第二点主要适用于项目中的外围类。发布要在其他项目中使用和扩展的框架或库时提供的扩展点。
另一方面,使用术语的一个很好的用例是用于框架内部的类,这些类将公共功能与其他外围类区分开来。由于这些类不应该直接实例化,因此它们被标记为 ,这与第一点一致。Baseabstract
以下是Android框架中的层次结构作为示例:Adapter
- 
接口层次结构。
public interface Adapter
public interface ListAdapter extends Adapter
public interface SpinnerAdapter extends Adapter
 
- 
分解常见行为和接口实现的类。abstractBase
public abstract class BaseAdapter implements ListAdapter, SpinnerAdapter
 
- 
外围类,这些类大多是实例化的,但有时由 Android 应用程序扩展。
public class SimpleAdapter extends BaseAdapter implements Filterable
public class ArrayAdapter<T> extends BaseAdapter implements Filterable