【发布时间】:2016-07-06 19:36:12
【问题描述】:
我有一个应用程序,我必须与多个供应商打交道——每个供应商都有不同的实现。例如,假设支付系统,有许多供应商和银行。
有一些共同点,例如实施过程。在每种情况下,我都必须给他们一个回调 URL 来给我回复。
目前,我有两个供应商 - VendorPay 和 VendorA。
我将有两条路线:
payment/callback/vendorpay
payment/callback/vendora
它们每个都在控制器中调用两个方法。
processVendorpay and processVendora
现在,如果我想再添加 15 个这样的供应商,是否每次添加新供应商时都必须创建方法?有没有更清洁的解决方案?
我的控制器现在看起来像这样:
class PaymentController extends BaseController
{
protected $vendorpay_validator, $vendora_validator, $transaction, $transaction_log, $vendor_product, $vendor_transaction;
public function __construct(VendorpayValidator $vendorpay_validator, VendorAValidator $vendora_validator, Transaction $transaction, TransactionLog $transaction_log, VendorProduct $vendor_product, VendorTransaction $vendor_transaction)
{
$this->vendorpay_validator = $vendorpay_validator;
$this->vendora_validator = $vendora_validator;
$this->transaction = $transaction;
$this->transaction_log = $transaction_log;
$this->vendor_product = $vendor_product;
$this->vendor_transaction = $vendor_transaction;
}
}
这四个是模型库对象:$transaction, $transaction_log, $vendor_product, $vendor_transaction
如果我必须添加更多 venodrs,它会继续在此处添加验证器对象。什么是更清洁的方法?
我认为的解决方案之一是 - 对于多条路线,我只创建一种方法。现在我将在这个方法中检查路由,并在此基础上调用工厂对象。
【问题讨论】:
标签: php laravel design-patterns laravel-5