【问题标题】:Using the Factory Pattern in PHP and Laravel在 PHP 和 Laravel 中使用工厂模式
【发布时间】:2014-12-07 23:30:26
【问题描述】:
工厂是否应该负责寻找模型以及创建模型?
例如:
如果我有一个产品模型,它的工厂是否应该有这样的方法:
$product = $productFactory->findByID(32);
$product = $productFactory->all();
$product = $productFactory->findByName($productName);
$product = $productFactory->create($data);
【问题讨论】:
标签:
php
oop
design-patterns
laravel
factory-pattern
【解决方案1】:
好吧,实际上Factory Pattern 是一个creational pattern,它使用工厂方法来处理创建对象的问题,即使没有指定静态类,这意味着它在run-time 处动态创建对象。此模式用于处理对象创建机制,该机制允许客户端类使用基于运行时构建的动态类。此模式使用工厂方法(抽象),并且此方法使用其他类/对象构建对象,具体取决于使用构建对象的客户端类的请求。好吧,无论如何,这是一个广泛的事情。
与其考虑应该遵循哪种模式等设计模式,不如尝试找出类的用例并相应地使用它们。很可能您的意思是 Model 作为扩展 Eloquent ORM 的类,在这种情况下,如果您扩展 Eloquent ORM,您的模型类已经具有这些方法,因此您不需要在类中创建这些方法,而是分离业务逻辑和数据库层,您可以使用普通类,您可以使用这些类作为依赖项来调用数据库层类中的方法。无论如何,这听起来可能令人困惑。
这取决于你如何组织你的目录结构,但只考虑SoC 就足以理解这个想法,以获得一个干净的应用程序架构模式。不要把设计模式想得太深,而是想一个干净的应用程序模型,就是这样。大概this article may help you一点点(专门讨论用Laravel和Repository Pattern)。
对于Factory Pattern,您可以查看this 简单但有用的文章。