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