关注jdon好久了,一直是没有注册,也木有发过帖子,只是默默的看大家的精彩分享和评论(汗--),从这里开始接触到DDD,DCI,四色原型,也常常去设计模式板块复习复习,最近还是接触到四色原型,这两天在图书馆找到了彩色UML建模(java modeling in color with uml),于是迫不及待的看了起来。但是感觉疑惑蛮多,在dci中,感觉通过role就确定了责任。而在四色中,role和mi的职责总是搞不明白。直接贴代码吧,希望banq以及其他大虾分析下原因出在哪里,谢谢。
首先是根据dci自己假设的场景和代码 (自己逻辑感觉很清晰,当然例子实在太简单了,,主要是想体会其中的思想。。)
/** * @description: 男人角色接口---定义了男人职责 */ public interface IManRole { //爱护女人 public void loveWomen(); //赚钱 public void earnMoney(); //打坏人 public void hitStranger(); }
/** * @description: 女人角色接口----定义女人的职责 */ public interface IWomanRole { //爱老公 public void loveMan(); //打扮自己 public void makeSelfBeautiful(); //照顾孩子 public void careBaby(); }
/** * @description: 客户端测试 */ public class RoleDemo { public static void main(String[] args) { IManRole xl = new XiaoluMan(); xl.loveWomen(); xl.earnMoney(); xl.hitStranger(); IWomanRole xw = new XiaoWangWoman(); xw.careBaby(); xw.loveMan(); xw.makeSelfBeautiful(); } }
/***********************************************************************/ class XiaoluMan implements IManRole {
@Override public void loveWomen() { System.out.println("疼爱女人"); }
@Override public void earnMoney() { System.out.println("努力工作赚钱"); }
@Override public void hitStranger() { System.out.println("打跑了坏人"); }
}
class XiaoWangWoman implements IWomanRole {
@Override public void loveMan() { System.out.println("我疼爱老公"); }
@Override public void makeSelfBeautiful() { System.out.println("我使得自己更漂亮"); }
@Override public void careBaby() { System.out.println("我花更多时间照顾小baby"); }
} /***********************************************************************/
|
在这里 dci的datamodel我认为就是数据model(贫血对象---XiaoWangWoman/XiaoLuMan两个实体),只是在这个例子里面没有属性。
接下来的是我根据四色原型得到的。。。简直觉得惨不忍睹,耦合性大,也没有面向接口,扩展性,,,所以疑惑自己是否哪里思考的有问题,否则四色原型做出来如此丑陋。。。
/** * @[author]purpose[/author]: 探究四色原型 */
/** test sub*/ public class ColorUMLDemo { public static void main(String[] args) { Person p = new Person("xiaolu",new PersonDesc("男")); MaleRole role = new MaleRole(); role.setP(p); MI mi = new MI(role); mi.doWork(); } }
/***************************************************************/ /** @archetype ppt */ class Person { // 在这里认为所有人的名字都是不同的 private String name; private PersonDesc personDesc;
public PersonDesc getPersonDesc() { return personDesc; }
public Person(String name, PersonDesc personDesc) { this.name = name; this.personDesc = personDesc; }
public void setPersonDesc(PersonDesc personDesc) { this.personDesc = personDesc; }
public String getName() { return name; }
public void setName(String name) { this.name = name; } }
/** @archetype desc */ class PersonDesc { //抽出不变的一类属性,类似值对象 private final String sex;
public PersonDesc(String sex) { this.sex = sex; }
public String getSex() { return sex; } }
/** @archetype role */ class MaleRole { private Person p;
public Person getP() { return p; }
public void setP(Person p) { this.p = p; }
public String showInfo() { return "我是一个男人!"; } }
/** @archetype moment-interval */ class MI { private MaleRole m;
public MI(MaleRole role) { this.m = role; }
public MaleRole getM() { return m; }
public void doWork() { System.out.println("男人干活.\n" + m.showInfo()); } } /***************************************************************/
|
请各位指教,谢谢。身边也木有能讨论的人。。。[该贴被admin于2014-11-19 06:57修改过]
[该贴被admin于2014-11-19 06:58修改过]