Oop 申请中如何划分责任?
比如说,, 我想把网上商店分成三个部分。 用户:与用户相关的信息,例如,他们登录。注销。 通讯:发送电子邮件或通讯模块。 购物车:显示订单 好的,这三个模块是我的小网店的主要功能。 显然,用户需要处理自己的事情,例如,用户更改他们的个人资料图片(好的,我认为为用户设置个人资料图片是没有意义的,只是想这是一个例子。) 用户---呼叫--->user 但我在这里遇到了一个问题,当用户执行一些需要跨模块调用的函数时。。。。 让我举一个例子,如果用户丢失了密码,用户需要使用通信方法向他/她发送一个新密码…情况会变成这样:Oop 申请中如何划分责任?,oop,object,software-design,Oop,Object,Software Design,比如说,, 我想把网上商店分成三个部分。 用户:与用户相关的信息,例如,他们登录。注销。 通讯:发送电子邮件或通讯模块。 购物车:显示订单 好的,这三个模块是我的小网店的主要功能。 显然,用户需要处理自己的事情,例如,用户更改他们的个人资料图片(好的,我认为为用户设置个人资料图片是没有意义的,只是想这是一个例子。) 用户---呼叫--->user 但我在这里遇到了一个问题,当用户执行一些需要跨模块调用的函数时。。。。 让我举一个例子,如果用户丢失了密码,用户需要使用通信方法向他/她发送一个新密码
user ----call---> communication
更糟糕的情况是使用所有模块,情况如下:
用户使用购物图表处理他/她的购物,然后他/她下订单,发票使用通信模块发送给用户
user ----call---> shoppingCart ---call---> Communication
因此,每个模块不是独立的,所有模块都相互了解。。。。但我不想这样做,例如,这次我在做一个新的应用程序,例如,我在做一个只使用“用户”和“交流”的视频共享网站,我真的不需要“购物图”,还有一个新的视频模块
我可以“升级”我的用户和通信方法来处理视频模块,但问题是,如果我修复了一些错误,例如getFullName方法出错,当我需要“升级”回在线商店应用程序时,我也需要使用“视频”模块
我想问的是,如何划分他们的职责,以及如何使代码更具可重用性?多谢各位 将应用程序中的耦合最小化是一个很好的做法,但是完全移除耦合并不总是可能的 我的建议是构建只提供基本接口的基类
User
、Communication
和ShoppingCart
,例如getFullName()
然后,为每个应用程序编写能够与基类交互的单独包装器。您可能有一个在线购物
类和一个视频共享
类,其中包含针对每个应用程序所需的功能
有许多方法可以帮助您完成设计。另外,利用继承来实现所有应用程序中类似的功能