论坛首页 Java企业应用论坛

Domain Model 探索

浏览 104079 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-01-04  
frankensteinlin 写道
引用

设想一个新的用例:柜台取款。
你的取款方法又放在哪个对象里呢?

当然是银行柜台这个对象里面,当然是抽象意义上的柜台,取款,存款.......

当然还可以把接口抽象化,把取款机和柜台的共同部分的接口抽象出来,但决不是一个方法的接口如同取款Interface这一类的


呵呵,你怎么抽象化这个接口呢?如果不采用你所说的取款Interface?
0 请登录后投票
   发表时间:2005-01-04  
一些个人看法:
1.把需要追踪的时间的事务建成类的建模方法,
  是建立领域模型最重要的手段。

2.usecase方式和领域模型是2种非常不同的角度,
不要搞混了。特别是把actor当作类名,把actor的
case当作方法名的建模方式,我觉得不足取。
0 请登录后投票
   发表时间:2005-01-04  
我不得不承认可以有存款Interface();
这是我前面说的错误!

但是有一点在具体的类中很少有只有一种行为的类!
这里的接口继承其实是一种 has a 的关系

(可能是我对接口的语意理解有问题!)


不对业务不熟,做个假设:太外行的大家不要笑话:
我在A银行开了个账户希望得到的服务是:存款 取款 贷款 转账 ....高级客户有其他的特殊服务 如理财等 ...
  implement
         IAtmBank : I存款(); I取款();  I查询XX(); 
        I柜台Bank :I存款(); I取款();  I查询XX(); I挂失(),I理财()...
      ItelephoneBank: I查询XX(); I挂失(),I理财()...
      IWebBank: I查询XX(); I挂失(),I理财()...


注意这里决不是一个一个act的实现,二是先完成对对象的描述再实现.
0 请登录后投票
   发表时间:2005-01-04  
呵呵,我们又靠近了一点点。

不过我没看懂你的代码
哪些是类?哪些是接口?哪些是方法?
0 请登录后投票
   发表时间:2005-01-04  
都是interface
冒号前面的是大的interface 后面是被继承的.
也就是说:后面一个方法是一个interface:
0 请登录后投票
   发表时间:2005-01-04  
引用
我不得不承认可以有存款Interface();

不好意思我要后悔了,还是不应该有存款Interface()

我觉得接口的基本含义还是 is a !
吧每个方法作为一个接口美什么好处。


IperfectBank:存款(); 取款();  查询XX(); 挂失(),理财()... 查询XX();  存款(); 
IAtmBank : 存款(); 取款();  查询XX(); 
        I柜台Bank :存款(); 取款();  查询XX(); 挂失(),理财()... 
      ItelephoneBank: 查询XX(); 挂失(),理财()... 
      IWebBank: 查询XX(); 挂失(),理财()...

有I的是接口,没有I的是方法。
引用
0 请登录后投票
   发表时间:2005-01-04  
呵呵,我看你有点混乱了。
注意一下这段代码的味道吧,建议你重构。
然后看看最后的结果是什么。
0 请登录后投票
   发表时间:2005-01-04  
我认为不需要重构了,提取出同名的方法作为Interface?不对!还是前面打飞机打人的呢个例子?那是对多态的滥用,要抵制这种诱惑。
I电话bank 查询; Iwebbank 查询 ?都是查询?他们的主动对象是不同的,他们可以继承abstractBack,覆盖掉一些方法:
  Ibank :存款(); 取款();  查询XX(); 挂失(),理财()...所有的操作。
 IwebBank Implenent Ibank //覆盖多余的方法 throw unsupportExcption
  ItelephoneBank implement Ibank: //覆盖多余的方法 throw unsupportExcption



接口缩小了?残疾人也是人啊,他也许不能走 不支持走的方法,或许走的方式不一样
0 请登录后投票
   发表时间:2005-01-04  
frankensteinlin 写道
我认为不需要重构了,提取出同名的方法作为Interface?不对!还是前面打飞机打人的呢个例子?那是对多态的滥用,要抵制这种诱惑。
I电话bank 查询; Iwebbank 查询 ?都是查询?他们的主动对象是不同的,他们可以继承abstractBack,覆盖掉一些方法:


继承abstractBank吧

这样的话你的所有类是不是都可以继承abstractBank呢?
0 请登录后投票
   发表时间:2005-01-04  
不是,
只是银行接口这一部分[人和银行接口]剩下的再由银行拿着账户号码和密码去问账户.

你对柜台银行说这是我的存折 查询余额,我又密码
你再web应行上说这是我的用户名 密码 查询余额,
。。。。
银行帮你代理了其他服务
0 请登录后投票
论坛首页 Java企业应用版

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