Laravel Repository Pattern Contract
我正在尝试使用 Laravel 实现存储库模式。我可以理解使用接口来抽象数据存储的优势。
但是接口中定义的方法返回的对象呢?是否也应该在某种抽象类中定义它们?
例如:
1
2 3 4 5 6 7 8 9 10 11 12 13 |
class UserRepository implements UserInterface { protected $user; public function __construct(Model $user) public function find($userId) |
通过在我的控制器中执行此操作:
1
2 |
$user = UserRepository::find(1);
$user->name |
我是否打破了设计模式?
简短回答:是的。
长答案:根据依赖倒置原则,你总是必须依赖抽象而不是具体。如果有一天您需要更改该模型的实现,则必须更改该存储库类,这也违反了开闭原则。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/268437.html