例如, 我想将网上商店分为三个部分。 用户:用户相关信息,例如,他们登录。登出。 沟通:发送电子邮件或新闻稿模块。 ShoppingCart:显示订单。
好的,这三个模块是我小网上商店的主要功能。 很明显,用户使用medule,处理自己的东西,例如,用户更改他们的个人资料照片(好吧,我认为为用户提供个人资料照片是没有意义的,只是认为这是一个例子。)
用户---通话--->用户
但我在这里遇到了一个问题,就是当用户做一些功能时,需要跨模块调用.... 让我举一个例子,如果用户丢失了密码,用户需要使用通信方法向他/她发送新密码......情况会变成这样的事情:
user ----call---> communication
更糟糕的情况是使用所有模块,这是情况: 用户使用购物图表来处理他/她的购物,之后,他/她下订单,并且发票使用通信模块发送给用户。
user ----call---> shoppingCart ---call---> Communication
因此,每个模块都不是独立的,所有模块都相互认识....但我不想这样做,例如,这次我正在做一个新的应用程序,例如,我正在进行视频共享只使用“用户”和“通讯”的网站,我真的不需要“shoppingChart。”,并且有一个新的视频模块......
我可以“升级”我的用户和通信方法来处理视频模块,但问题是,如果我有一些错误修复,例如,getFullName方法做错了什么,当我需要“升级”回到网上商店应用程序,我需要采取“视频”模块.....
我想问的是,如何分离他们的责任,以及如何使代码更可重用?谢谢。
答案 0 :(得分:0)
最好尽量减少应用程序中的耦合,但并不总是完全删除它。
我的建议是构建仅提供基本界面的基类User
,Communication
和ShoppingCart
,例如getFullName()
然后,对于每个应用程序,编写能够与基类交互的单独包装器。您可能有一个OnlineShopping
类和一个VideoSharing
类,其中包含您需要的特定于每个应用程序的函数。
有许多structural patterns可以帮助您完成设计。此外,利用继承功能在所有应用程序中具有相似功能。