Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 申请中如何划分责任?_Oop_Object_Software Design - Fatal编程技术网

Oop 申请中如何划分责任?

Oop 申请中如何划分责任?,oop,object,software-design,Oop,Object,Software Design,比如说,, 我想把网上商店分成三个部分。 用户:与用户相关的信息,例如,他们登录。注销。 通讯:发送电子邮件或通讯模块。 购物车:显示订单 好的,这三个模块是我的小网店的主要功能。 显然,用户需要处理自己的事情,例如,用户更改他们的个人资料图片(好的,我认为为用户设置个人资料图片是没有意义的,只是想这是一个例子。) 用户---呼叫--->user 但我在这里遇到了一个问题,当用户执行一些需要跨模块调用的函数时。。。。 让我举一个例子,如果用户丢失了密码,用户需要使用通信方法向他/她发送一个新密码

比如说,, 我想把网上商店分成三个部分。 用户:与用户相关的信息,例如,他们登录。注销。 通讯:发送电子邮件或通讯模块。 购物车:显示订单

好的,这三个模块是我的小网店的主要功能。 显然,用户需要处理自己的事情,例如,用户更改他们的个人资料图片(好的,我认为为用户设置个人资料图片是没有意义的,只是想这是一个例子。)

用户---呼叫--->user

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

user ----call---> communication 
更糟糕的情况是使用所有模块,情况如下: 用户使用购物图表处理他/她的购物,然后他/她下订单,发票使用通信模块发送给用户

user ----call---> shoppingCart ---call---> Communication 
因此,每个模块不是独立的,所有模块都相互了解。。。。但我不想这样做,例如,这次我在做一个新的应用程序,例如,我在做一个只使用“用户”和“交流”的视频共享网站,我真的不需要“购物图”,还有一个新的视频模块

我可以“升级”我的用户和通信方法来处理视频模块,但问题是,如果我修复了一些错误,例如getFullName方法出错,当我需要“升级”回在线商店应用程序时,我也需要使用“视频”模块


我想问的是,如何划分他们的职责,以及如何使代码更具可重用性?多谢各位

将应用程序中的耦合最小化是一个很好的做法,但是完全移除耦合并不总是可能的

我的建议是构建只提供基本接口的基类
User
Communication
ShoppingCart
,例如
getFullName()

然后,为每个应用程序编写能够与基类交互的单独包装器。您可能有一个
在线购物
类和一个
视频共享
类,其中包含针对每个应用程序所需的功能

有许多方法可以帮助您完成设计。另外,利用继承来实现所有应用程序中类似的功能