Dro*_*roo 10
我不知道注释会取代界面,但我可以看到它的吸引力.这完全取决于实现.
注释提供元数据以进一步描述代码,消费者(大多数时候)使用反射在运行时解释代码.使用接口,明确定义了该实现合同.
你可以有:
interface CrudDao<T> {
Serializable create(T t);
T read(Serializable id);
void update(T t);
void delete(T t);
}
Run Code Online (Sandbox Code Playgroud)
这将是一个繁琐的实施合同,并可能会产生某种方法链接.
相反,你可以这样做:
class SomeDao {
@Create
long create(SomeEntity e) { // code }
@Read
SomeEntity read(long id) { // code }
@Update
void update(SomeEntity e) { // code }
@Delete
void delete(SomeEntity e) { // code }
}
Run Code Online (Sandbox Code Playgroud)
缺点是使用起来很麻烦:
class CrudFactory {
long create(Class clazz, Object obj) {
// loop through methods
// find method with @Create
// call method
}
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中的注释在大多数情况下都是过度的,IMO.关于明确定义的,记录良好的合同,有一些话要说.
| 归档时间: |
|
| 查看次数: |
4311 次 |
| 最近记录: |