关于Domain Model的对谈录之一: 充血模型与OO
一篇文章只写一个小主题,这样才能让读者集中注意力。 不过此系列文章都是给自己看的,因为它们没什么新意,都是在别人牙慧的基础上总结出来的 =================================================================================== 结论: 充血模型比贫血模型更OO ========================================== A: 充血模型比贫血模型更OO.因为一个领域对象中既有数据又有行为,符合对象的定义 B: 这太牵强了!你还是说点有实际意义的吧。 A: 好吧。比如说,我们可以在充血模型中 通过多态消除IF/ELSE,这算是典型的OO吧。 B: 举个实际的例子吧。 A: 好。比如你还在上大学的时候,天天要去食堂。一般情况下,你还没开口,食堂师傅就给你打好了5毛钱的饭,为什么? B: 因为我是男生。如果是女生,默认打3毛钱的饭。 A: 对。那请你用Transaction Script模式,也就是贫血模型,实现“默认打饭”逻辑。 B: void 打饭(student){ if(student 是 “男生”){ 打五毛; }else{ 打三毛; } } A: 好。看我这个 void 打饭(student){ 打(student.默认饭量()); } class MaleStudent extends Student(){ int 默认饭量(){ return “五毛”; } } class FemaleStudent extends Student(){ …