我正在使用Laravel创建REST API,其中基于用户角色的终结点有多个参数。
当前在服务中使用if条件对此进行检查。
class UserService
{
public function update(array $attribute, $userId)
{
$userRepository = app(\App\Repositories\UserRepositoryInterface::class);
$user = $userRepository->get($userId);
$allowedUpdatableFieldForTeachers = ['name', 'age', 'graduated_at'];
$allowedUpdatableFieldForSupervisor = ['name', 'age', 'graduated_at', 'balance', 'salary'];
if ($user->role == 'teacher') {
$userRepository->update(Arr::only($attribute, $allowedUpdatableFieldForTeachers), $userId);
}
if ($user->role == 'supervisor') {
$userRepository->update(Arr::only($attribute, $allowedUpdatableFieldForSupervisor), $userId);
}
}
}
然而,它违反了单一责任原则。 那么解决这个问题的最佳实践/模式是什么。
答案 0 :(得分:0)