我有一個應用程序,我必須處理多個供應商 - 每個供應商都有其不同的實現。例如,假設Payment Systems,有許多供應商和銀行。Laravel的工廠模式清潔代碼
有一些共同點,比如實施過程。在每種情況下,我都必須給他們一個回叫網址來給我回復。
現在,我有兩個供應商 - 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,它不斷在這裏添加驗證對象。什麼是更乾淨的方式來做到這一點?
我認爲的解決方案之一 - 對於多個路線,我只是創建一個方法。現在我將檢查此方法中的路由並在其上調用Factory對象。