论坛首页 Java企业应用论坛

贫血模型or充血模型新的解决办法

浏览 15502 次
精华帖 (1) :: 良好帖 (8) :: 新手帖 (0) :: 隐藏帖 (7)
作者 正文
   发表时间:2011-09-08   最后修改:2011-09-08
楼主还在上学,研究的就这么广泛,不易啊。建议还是尽量别逃课,基础学牢了对长期发展有好处。

我想楼主重点描述的是,对象在运行期根据实际情况切换角色的行为,对于ruby可以动态mixin行为,对于java只能通过delegate完成,但终归只是表达形式不同,似乎跟贫血、充血关系不大,倒和“基于组合的编程”的思路更近一些。

关于楼主特意忽略的事务的问题,建议读一读《代码之美》关于使用stm实现事务的一章,或者akka作者jonas写的一个ppt,都是入门学习stm的好资料,我个人也在学习中。
0 请登录后投票
   发表时间:2011-09-08  
yangguo 写道
只是两种不同的模型,代表了两种设计思想,不存在什么解不解决的问题。
如此误人子弟,不隐藏才怪。

嗯 受教了,开始我对贫血模型是很有抵触情绪的,可能是我想成为一个面向对象程序员吧,所以总感觉贫血模型有点面向过程的味道。贫血模型还是有很多好处的。好处我就不再说一次啦。

其实我想表达我的观点就是给充血模型减减肥。因为它里面实在有太多的职责了。如果按照单一职责原则这应该算是一个问题,但是用什么方法解决比较好呢?我感觉DCI就是一个不错的方法。我真没有误人子弟的意思,我现在才是子弟
0 请登录后投票
   发表时间:2011-09-08  
counters15 写道
mistbow 写道
晕了 这都隐藏 下回是没分发帖子了 谁能给我个理由为什么隐藏啊 以后我好改改啊

你发错区了吧。。。。这不是java编程啊。。

  这不是领域模型区嘛,于是就发这里了。我想讨论的是模式,不是具体语言:)
0 请登录后投票
   发表时间:2011-09-08  
yippees 写道
没看懂这个RUBY例子到底有啥好处
传了两个对象进去,然后调用了一下方法··
搞了一堆名词···

    class Account 
      def initialize(username, money) 
        @username = username 
        @money = money 
      end 
      
        def get_money(amount) 
    @money += amount 
  end 

      def get_money 
        @money 
      end 
    end 

    gfc_account, lh_account = Account.new("gfc", 3000), Account.new("lh", 2000) 
     
    puts "****工资上交中****" 
    puts "余额为:" + gfc_account.get_money(3000).to_s 
    puts "***************" 
    puts "余额为:" + lh_account.get_money(-3000).to_s 
    puts "****上交完成****" 

没学过RUBY 照猫画虎弄的·····

现在很多技术问题都跟那些成功学似的 捏造一个概念然后生造一些例子
例如什么温水青蛙 猴子香蕉什么的

例如这个例子 我理解是玩得是一个类似动态继承的概念
是蛮有趣的

这个例子本身就木这么多事 生拆一堆类 然后再整半天··
就像以前那种麦肯锡之类的公司
转账本身不是账户的动作 账户不会转账 账户只有钱多钱少


嗯,对。“我理解是玩得是一个类似动态继承的概念”的确是这样。简单理解就是一个人带不同的帽子去做不同的事情。但是不要小看这个功能,如果什么东西都能那么简单的话,就不会有设计模式啦:)
0 请登录后投票
   发表时间:2011-09-08  
sunheavenvan 写道
jdon很早就引入DCI讨论,也用过java写过,尽管不太优雅。java的mixin可以实现。

DCI是对DDD的修正,DDD中纯领域概念仍然可用,只是领域内的划分各不相同。

“We always do class oriented programming but object oriented programming . ”

class和object是共性和个性的体现,在特定领域内某些概念是比较稳定可以在class中绑定,个性是领域中的个性,是在object时注入。


嗯,在jdon学到不少东西。最后一句话我非常赞同。但是如何实现这句话呢?我认为考虑角色就比较好,如果是对于特定场景,那么关于这个场景的职责就全都拿出去。最后的类剩个骨头架子才好呢。以后我再想放什么,直接堆这个类里好了。不顺眼再拿出去。O(∩_∩)O~
0 请登录后投票
   发表时间:2011-09-08  
windlike 写道
简单问题复杂化,哎!

不能这么看啊,设计模式不也是简单问题复杂话嘛。设计模式中有很多两个人通信的事,还老搞出第三zhe来协助呢。第三zhe也不是没有好处的嘛。
0 请登录后投票
   发表时间:2011-09-08  
woaiwofengkuang 写道
从一开始举的人的例子来看,不管是学生还是子女本质上都是个,所以可以继承人。但问题又来了在人这个类中或者说是接口中不是还有一大堆的操作吗。要兼顾学生还有子女。


开头一句话我有点不太理解。不是说在使不使用继承的时候,要先考虑会不会有向上转型吗?嗯,我有一点明白了,人可以在不同的场景当中来工作,这就是向上转型。但是我又有一个问题,那么这个原来的student对象如果创建呢?是在进入场景的时候创建还是怎么创建呢?
0 请登录后投票
   发表时间:2011-09-08  
liusong1111 写道
关于楼主特意忽略的事务的问题,建议读一读《代码之美》关于使用stm实现事务的一章,或者akka作者jonas写的一个ppt,都是入门学习stm的好资料,我个人也在学习中。


嘿嘿,谢谢指点。代码之美这本书我还真买了,但是一页还没来得及看呢。现在马上看看。

学校总是把10分钟的课讲成50分钟的课,我真受不了啊,我自学好不好哇。还好大四了没几节课了,专心找工作
0 请登录后投票
   发表时间:2011-09-08   最后修改:2011-09-08
还以为给出的是java的解决之道!!如果你领悟的深刻一点,想想java的解决之道!!
0 请登录后投票
   发表时间:2011-09-08  
wkcgy 写道
还以为给出的是java的解决之道!!如果你领悟的深刻一点,想想java的解决之道!!

上面好像有人提到了吧,用代理吧。我研究研究哈。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics