如何分离申请中的责任?

时间:2011-07-28 09:01:42

标签: oop object software-design

例如, 我想将网上商店分为三个部分。 用户:用户相关信息,例如,他们登录。登出。 沟通:发送电子邮件或新闻稿模块。 ShoppingCart:显示订单。

好的,这三个模块是我小网上商店的主要功能。 很明显,用户使用medule,处理自己的东西,例如,用户更改他们的个人资料照片(好吧,我认为为用户提供个人资料照片是没有意义的,只是认为这是一个例子。)

  

用户---通话--->用户

但我在这里遇到了一个问题,就是当用户做一些功能时,需要跨模块调用.... 让我举一个例子,如果用户丢失了密码,用户需要使用通信方法向他/她发送新密码......情况会变成这样的事情:

user ----call---> communication 

更糟糕的情况是使用所有模块,这是情况: 用户使用购物图表来处理他/她的购物,之后,他/她下订单,并且发票使用通信模块发送给用户。

user ----call---> shoppingCart ---call---> Communication 

因此,每个模块都不是独立的,所有模块都相互认识....但我不想这样做,例如,这次我正在做一个新的应用程序,例如,我正在进行视频共享只使用“用户”和“通讯”的网站,我真的不需要“shoppingChart。”,并且有一个新的视频模块......

我可以“升级”我的用户和通信方法来处理视频模块,但问题是,如果我有一些错误修复,例如,getFullName方法做错了什么,当我需要“升级”回到网上商店应用程序,我需要采取“视频”模块.....

我想问的是,如何分离他们的责任,以及如何使代码更可重用?谢谢。

1 个答案:

答案 0 :(得分:0)

最好尽量减少应用程序中的耦合,但并不总是完全删除它。

我的建议是构建仅提供基本界面的基类UserCommunicationShoppingCart,例如getFullName()

然后,对于每个应用程序,编写能够与基类交互的单独包装器。您可能有一个OnlineShopping类和一个VideoSharing类,其中包含您需要的特定于每个应用程序的函数。

有许多structural patterns可以帮助您完成设计。此外,利用继承功能在所有应用程序中具有相似功能。