将API逻辑包装到一个地方

时间:2016-03-22 13:18:40

标签: php design-patterns software-design

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

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

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

我唯一的想法(我并不喜欢它)就是创造一个" Helper"用于处理所有逻辑的类。 在我创建组的代码中,我会做类似的事情:MyHelper :: newGroup($ group,..)。 当我创建一个新用户时,我会做一些像MyHelper :: newUser($ login,$ firstname,...),...

你有更好的想法将所有这些不同的逻辑包装得更多OOP吗?

感谢。

1 个答案:

答案 0 :(得分:0)

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

https://sourcemaking.com/design_patterns/observer

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

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