网上支付方式模型的实现?

07-10-23 fety07
一般电子商务网,有在线支付功能,有的支付多种支付方式,电子商务网开发需要对支付方式做一个维护,

就是说,我可以动态的增加,删除,修改支付方式,前台网页显示这些支付方式(以便客户支付时可以选择),

假设有这样的关系: 一种支付方式(由于前台显示的需要而添加一些额外的信息)对应一种支付接口(比如

"支付宝"),支付接口(比如"支付宝""支付宝")它支付多种货币交易,但是选择这个支付接口的支付方式不

只需要其中的一种或者几种货币,就是支付方式所支付的货币是从支付接口里选择,是支付接口支持的货

币的一个子集,支付方式与货币是一对多的关系,支付接口与货币也是一对多的关系,前者关系受后者关系

的限制.

支付方式与支付接口是一对一的关系,货币如果作为它们的关联类,好像不合理,如果用面向数据库的思维,我可以在数据库里建两张表,一张是支付方式与货币的一对多的关系,一

张是支付接口与货币的一对多的关系,代码里只要在支付方式选择支付接口时,选择该支付接口支持的货

币,然后把对应的货币插入到数据表里.

如何来理清他们的关系?谢谢.

              

fety07
2007-10-23 17:26
想用DDD,并不是一件简单的事,自认为看了不少这方面的书,该有个突破,但还是找不到突破口,找不到一个切入点.想开始,然而脑种一片空白,思维还是在有限的空间挣扎.

banq
2007-10-24 16:08
>支付方式与支付接口是一对一的关系,货币如果作为它们的关联类

用对象方式考虑,必须注意高聚合,也就是两者关系是否紧密,支付方式如果是一个对象,必然有一个支付接口的实现,这应该属于严格的隶属关系。

那么,下面主要考察它们俩和货币关系,货币应该属于支付接口的一个重要属性,支付接口和货币是一对多关联。

没有必要再设计将支付方式和货币的关系,否则就真成了一个蜘蛛网,或者象猫追自己的尾巴一样。

如果你需要确定某个支付方式支持哪些货币,那么就顺藤摸瓜,从支付方式找到支付接口,再找到对应的货币关系。

某次网上支付活动,必然会选择一个支付方式,以及相应的货币,这些信息是记录在“支付信息”这个对象中,支付信息又是嵌套在订单中,或者与订单有1:1关系。

fety07
2007-10-25 11:40
重新梳理了一下业务逻辑,下订单,支付,都是围绕"购物"这个活动,可以把它"购物"作为一个用例,会员启动这个用例.完成"购物"需要以下业务活动:用户选择商品,并下订单,然后再支付,并且网站只支持款到发货,所以我们必须对订单和支付情况的状态进行跟踪,用户也可以对自己的订单状况进行查询.网站支付多种支付方式,比如网上银行(招商,工行等),汇款,第三方支付接口.支付还可以混合使用代金卷,和积分抵扣.最后还要考虑会员等级折扣.在最后完成了支付活动,必须对积分进行更新.积分是根据订单折扣之前的商品价格总和来算.现在的业务算是比较复杂.

下面是我的一些分析:

根据前面的业务:可以抽出一些比较重要的概念,"用户(member)","订单(order)","支付(payment)",之前我提到了支付方式和支付接口,后来想了一下,这是同一个概念就是"支付",为了完成"支付"这个功能,我有不同的支付方式,就是有不同的实现,这里可以用一个"支付接口",封装它的实现.关键是这里有比较复杂的联系,"支付(payment)"在实际中是由"用户(member)"执行的,但是,必须是有了"订单(order)"之后还有"支付(payment)",这里有一个先后的关系.现在考虑支付实现,根据彭老师的建议,这里抽象一个"支付信息(payINfo)",让它负责记录支付情况,比如我消费了多少积分,我选择了什么支付方式(可以混合支付),这里有一个比较迷惑的地方是:谁用"支付接口",是"用户(member)"还是"订(order)",还是其它,如何更真实的反映领域,请各位指点迷津.谢谢.

banq
2007-10-25 12:11
>谁用"支付接口",是"用户(member)"还是"订(order)",还是其它

两个都不是,是"支付(payment)",而"订单(order)"和"支付(payment)"则是一个关联关系。

从实际案例中找出正确的关联关系,支付接口不可能和用户有关,因为用户使用太多模型对象了,不可能都和用户挂上关系, 支付接口也不可能直接和订单发生关系,因为订单不只是"支付接口"一个信息,还有支付其他信息如支付多少钱,是否足够等等,而这些支付信息和支付接口一起应该包含在"支付(payment)"这个对象中。

猜你喜欢
5Go 1 2 3 4 ... 5 下一页