将 API 逻辑包装到一个位置


wrapping API logic to a single place

我正在开发一项服务,该服务管理其他服务(API调用)上的用户。为了简化服务的添加,我创建了一个每个服务都必须实现的接口(服务接口)。该界面具有一些功能,例如newUser($input),removeUser($input),editUser($input)...输入是调用 API 所需的所有信息的数组(登录名、名字,..)。基本上,该界面是针对用户,组(用户属于组)和权限(用户具有组的权限)的CRUD。

目标是将 API 调用与在我的服务上执行的操作相匹配。例:当我在我的服务上创建一个组时,我想在实现该接口的所有服务上创建它。当我在我的服务上创建用户时,我希望仅在我授予他访问权限的服务上创建相同的用户。当我向服务上的用户添加权限时,我想为目标服务向同一用户添加相同的权限。如您所见,根据操作的不同,"协议"是不同的。

我想做的是包装这个协议。我不想在我当前的代码中看到这个逻辑(搜索用户有权访问的服务,哪个权限属于哪个服务,...)。

唯一的想法(我真的不喜欢它)是创建一个"帮助程序"类来处理所有逻辑。在我的代码中创建一个组,我会做这样的事情:MyHelper::newGroup($group,..)。当我创建一个新用户时,我会做一些类似MyHelper::newUser($login,$firstname,...)的操作,...

你有更好的主意来包装所有这些不同的逻辑更多 OOP 吗?

谢谢。

在这种情况下,观察者模式是最好的选择。有关观察者模式的详细信息,请遵循:

https://sourcemaking.com/design_patterns/observer

https://en.wikipedia.org/wiki/Observer_pattern

http://www.tutorialspoint.com/design_pattern/observer_pattern.htm