我正在开发一项服务,该服务管理其他服务(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