论坛首页 Java企业应用论坛

Domain Model 探索

浏览 104078 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-01-04  
恩,那么这个抽象的“银行”对象和ATM对象的方法中有多少差异呢?
0 请登录后投票
   发表时间:2005-01-04  
ATM对象是指的atmbank?
关键是他们的接口不一样,
取款来说:
atm的接口是:数量,密码,账号
柜台的接口是:取款单;

抽象银行出来的结果标准借口可能是取款单

其次 抽象银行 只负责共通的业务,如:要求账户做减少账户余额的工作。

而atm可能会有个取款限制
柜台是没有的,这就是两个不同实体的行为不同了
他们的规则是不同的
0 请登录后投票
   发表时间:2005-01-04  
那么如果在ATM外封装一层抽象ATM银行对象,同样以取款单为对外接口,把部分业务逻辑放到抽象ATM银行对象中。
剩下的为单独的ATM对象。

这样的设计你认为如何呢?
0 请登录后投票
   发表时间:2005-01-04  
明白了,你把atm和银行彻底隔离开,应该也不错。这样xxxACT其实就完全不要了
0 请登录后投票
   发表时间:2005-01-04  
呵呵,你仔细看一下抽象银行这个对象里面的方法。
全部都是Act啊。
如果没有了这些Act,抽象银行还是不是存在呢?
0 请登录后投票
   发表时间:2005-01-04  
引用

全部都是Act啊。
如果没有了这些Act,抽象银行还是不是存在呢?

赫赫,你能不能举出一个没有动作的interface?没有act的class?.除了那写起标志作用的 如序列化接口
引用

同样以取款单为对外接口,把部分业务逻辑放到抽象ATM银行对象中

取款只是银行这个接口的一个动作。

抽象银行只是一个共通的实现(也可以完全不要)
引用
如:要求账户做减少账户余额的工作


抽象银行的共通实现也可以不要; 抽象ATM银行直接implementI银行 interface; 也是一样的阿。

客户面对的是银行。不是取款接口。你是从银行取款,不是从老爸那里取款!你总要知道和你打交道的是什么吧,无论是显式的还是隐式的。它总有它的个性。它的act 。

我前面说过了:act是面对接口的编程,也是多态的!但也是过程化的,他注重的是怎么做1 2 3 4。

面向对象的编程,他不但固定了借口,而且还描述了和你打交道的对象边界。使对象更易管理。

拿这个例子来说 顾客看见银行这个对象,就知道它提供哪些服务,而不是说面对的是取款接口,查询接口...

工商银行 招商银行 他们都取款:其中一个取款接口变了,另一个一定要变么?这个接口是由银行定义的还是接口来定义银行?
0 请登录后投票
   发表时间:2005-01-05  
ok,我来整理一下你的说法,看看你是不是同意我的理解
(有个客户告诉我:双方达成理解的标志不是你说一段话,然后我说“我懂了”。而是我把你的话重新表达一遍,然后你说“我懂了”。)

无论是ATM取款、还是柜台取款,或者是其他的方式。
用户面对的都是“银行”这个对象。

“银行”这个对象决定了其行为和对外的接口。
而不是因为有取款、存款之类的接口才有“银行”这个对象。

是不是这个意思?
0 请登录后投票
   发表时间:2005-01-05  
对 ,我就是这个意思。

引用

(有个客户告诉我:双方达成理解的标志不是你说一段话,然后我说“我懂了”。而是我把你的话重新表达一遍,然后你说“我懂了”。)

这句话太经典了 收藏
0 请登录后投票
   发表时间:2005-01-05  
好,最后一个问题。

让我们回归到最开始的用例:ATM取款。
假设不考虑柜台取款等等因素,仅仅对于ATM取款这个用例来说。
有没有“虚拟银行”这个对象?
或者说是可有可无的?
0 请登录后投票
   发表时间:2005-01-05  
出去atm机本身的复杂性(一些机械操作:吐钱 。。)来说,应该是有“虚拟银行”这个对象的。
0 请登录后投票
论坛首页 Java企业应用版

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