【日常业务开发】业务代码常见类命名
1、实体类。
- 数据对象:***DO,***即为数据表名。 UserDO
- 数据传输对象:***DTO,***为业务领域相关的名称。 UserDTO
- 展示对象:***VO,***一般为网页名称。 UserVO
- POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。
2、CRUD业务操作,三层命名。 ***Controller,***Service(接口),*** Dao/Mapper(接口)
UserController
接口: UserService 实现类: UserServiceImpl
UserDao/UserMapper
3、抽象类,Abstract***
AbstractFactoryBean
AbstractBeanDefinition
AbstractBeanFactory
4、异常类, ***Exception
GlobalExceptionHandler
5、工具类***Util,***Helper。都表示工具类,Util一般是无状态的,Helper以便需要创建实例才能使用。但是一般没有使用Tool作为后缀的。
HttpUtil
TestKeyFieldHelper
CreationHelper
6、***Constants
一般用于常量列表。
CommonConstant
7、***Mode,***Type, ***Enum
看到mode这个后缀,就能猜到这个类大概率是枚举。它通常把常见的可能性都列到枚举类里面,其他地方就可以引用这个Mode。
OperationMode
BridgeMode
ActionType
StatusEnum
8、***Filter
过滤器,用来筛选某些满足条件的数据集,或者在满足某些条件的时候执行一部分逻辑。如果和责任链连接起来,则通常能够实现多级的过滤。
FilenameFilter
AfterFirstEventTimeFilter
ScanFilter
9、***Interceptor
拦截器,其实和Filter差不多。不过在Tomcat中,Interceptor可以拿到controller对象,但filter不行。拦截器是被包裹在过滤器中。
HttpRequestInterceptor
10、***Pool
表示池子。内存池,线程池,连接池。
ThreadPool
ConnectionPool
ObjectPool
MemoryPool
11、***Wrapper
用来包装某个对象,做一些额外的处理,以便增加或者去掉某些功能。
IsoBufferWrapper
ResponseWrapper
MavenWrapperDownloader
12、Option, Param,***Attribute,***Properties
用来表示配置信息。说实话,它和Properties的区别并不大,但由于Option通常是一个类,所以功能可以扩展的更强大一些。它通常比Config的级别更小,关注的也是单个属性的值。Param一般是作为参数存在,对象生成的速度要快一些。
SpecificationOption
SelectOption
AlarmParam
ModelParam
13、***Converter,***Resolver
转换和解析。一般用于不同对象之间的格式转换,把一类对象转换成另一类。注意它们语义上的区别,一般特别复杂的转换或者有加载过程的需求,可以使用Resolver。
DataSetToListConverter
LayoutCommandLineConverter
InitRefResolver
MustacheViewResolver
14、***Formatter
格式化类。主要用于字符串、数字或者日期的格式化处理工作。
DateFormatter
StringFormatter
15、***Factory
毫无疑问,工厂模式的命名,耳熟能详。尤其是Spring中,多不胜数。
SessionFactory
ScriptEngineFactory
LiveCaptureFactory
16、***Holder
表示持有某个或者某类对象的引用,并可以对其进行统一管理。多见于不好回收的内存统一处理,或者一些全局集合容器的缓存。
QueryHolder
InstructionHolder
ViewHolder
17、***Provider
Provider = Strategy + Factory Method。它更高级一些,把策略模式和方法工厂揉在了一块,让人用起来很顺手。Provider一般是接口或者抽象类,以便能够完成子实现。
AccountFeatureProvider
ApplicationFeatureProviderImpl
CollatorProvider
18、***Processor
某一类功能的处理器,用来表示某个处理过程,是一系列代码片段的集合。如果你不知道一些顺序类的代码怎么命名,就可以使用它,显得高大上一些。
CompoundProcessor
BinaryComparisonProcessor
DefaultDefaultValueProcessor
19、***Registrar
注册并管理一系列资源。
ImportServiceRegistrar
IKryoRegistrar
PipelineOptionsRegistrar
20、***Invoker,***Invocation
invoker是一类接口,通常会以反射或者触发的方式,执行一些具体的业务逻辑。通过抽象出invoke方法,可以在invoke执行之前对入参进行记录或者处理;在invoke执行之后对结果和异常进行处理,是AOP中常见的操作方式。
MethodInvoker
Invoker
ConstructorInvocation
21、***Initializer
如果你的应用程序,需要经过大量的初始化操作才能启动,那就需要把它独立出来,专门处理初始化动作。
MultiBackgroundInitialize
ApplicationContextInitializer
22、***Generator
生成器,一般用于生成代码,生成id等。
CodeGenerator
CipherKeyGenerator
23、***Aware
Aware就是感知的意思,一般以该单词结尾的类,都实现了Aware接口。拿spring来说,Aware 的目的是为了让bean获取spring容器的服务。具体回调方法由子类实现,比如ApplicationContextAware。它有点回调的意思。
ApplicationContextAware
ApplicationStartupAware
ApplicationEventPublisherAware
24、***Bootstrap,***Starter
一般作为程序启动器使用,或者作为启动器的基类。通俗来说,可以认为是main函数的入口。
AbstractBootstrap
ServerBootstrap
MacosXApplicationStarter
DNSTaskStarter