锁定老帖子 主题:domain model的延伸讨论
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-20
用不同的方法论去看待这个问题会得出不同的结果。
从所谓的充血到贫血,在Java的方法论里被认为是进化。 还记得曾经被用来作为Java学习圣典的Jive就是采用的充血模型,而后来认为应该把域对象里面的属性和行为分离开来来达到解耦等的目的。如果沿用此方法论,在把它设计成为充血模式,那岂不是倒退?当然除非你换了一个方法论。 |
|
返回顶楼 | |
发表时间:2007-06-14
public class User extends ObjectEntity { /** * Name of "User" object. */ public static final String _ = "User"; ....... public User(Object... nameValue) { super(_); set(nameValue); } public static User load(long id, List<String> selectPropNames, Object... options) throws CoatException { return (User) AbstractNappy.load(User.class, com.qz.dcoat.util.N.asOid(ID, id), selectPropNames, options); } public static List<User> find(List<String> selectPropNames, Condition condition, Object... options) throws CoatException { return AbstractNappy.find(User.class, _, selectPropNames, condition, options); } public static int count(Condition condition, Object... options) throws CoatException { return AbstractNappy.count(_, condition, options); } ....... } 1、某部门录用一名新员工 User user = new User(User.NAME, "newUser", User.DEPARTMENT, "dep"); user.store(); ...... 4、给某员工分配一项任务 user.add(task); ...... 上面只写了完任务1, 4的代码实例。User是自动生成的。 其它的代码和xml配置(不上十行)就懒得贴了。 |
|
返回顶楼 | |
发表时间:2007-08-18
我认为领域驱动的意义就是保证对象间的关联不会因为生命周期阶段的不同而变化,我们在内存中用引用即地址来标示一个对象 而在持久层就用ID,来标示,还要区分值对象 实体之类,但ID是逻辑上的而引用是物理的。所以在本人正在研究的java中间件中提出了URA的概念,既是基于一个文件系统,以对象为单位实行虚拟存储,分配统一的容器地址,持久的引用记录的是“地址”与逻辑无关。所以不存在DDD带来的困扰,虚拟了持久层,是在内存或持久层的对象不加区别,不论形态,以统一的URA进行引用,甚至实现分布式系统在容器中也可以动过专有的Servlet-port访问。
|
|
返回顶楼 | |