Php Laravel存储库模式契约
我正在尝试使用Laravel实现存储库模式。我可以理解使用接口来抽象数据存储的好处 但是接口中定义的方法返回的对象呢。它们是否也应该在某种抽象类中定义 例如:Php Laravel存储库模式契约,php,design-patterns,laravel,laravel-4,repository-pattern,Php,Design Patterns,Laravel,Laravel 4,Repository Pattern,我正在尝试使用Laravel实现存储库模式。我可以理解使用接口来抽象数据存储的好处 但是接口中定义的方法返回的对象呢。它们是否也应该在某种抽象类中定义 例如: class UserRepository implements UserInterface { protected $user; public function __construct(Model $user) { $this->user = $user; } public
class UserRepository implements UserInterface {
protected $user;
public function __construct(Model $user)
{
$this->user = $user;
}
public function find($userId)
{
return $this->user->find($userId);
}
}
通过在我的控制器中执行此操作:
$user = UserRepository::find(1);
$user->name
我打破了设计模式吗?简短回答:是的
长句回答:根据《圣经》,你总是必须依赖抽象,而不是具体。如果有一天您需要更改该模型的实现,那么您必须更改该存储库类,这也违反了规则。谢谢您的回答。因此,为了使我的业务逻辑独立于雄辩的模型,我似乎必须在一个“AbstractedUser”类中抽象用户,该类将实现存储库接口。所有其他商业实体也是如此。然后我可以扩展这些抽象类,并向它们传递有说服力的模型。我是不是设计过度了?