我正在尝试使用 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 |
我是否打破了设计模式?
简短回答:是的。
长答案:根据依赖倒置原则,你总是必须依赖抽象而不是具体。如果有一天您需要更改该模型的实现,则必须更改该存储库类,这也违反了开闭原则。
- 谢谢你的回答。因此,为了使我的业务逻辑独立于 Eloquent 模型,我似乎必须将用户抽象到一个”AbstractedUser”类中,该类将实现存储库接口。所有其他业务实体也是如此。然后我可以扩展这些抽象类并将 Eloquent 模型传递给它们。我是否过度设计了这个?
声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)