使用策略模式,如何以不同的參數對待不同的execute方法?具有不同方法簽名的策略模式
3例策略
public function execute(string $param1, string $param2)
{
// Do something specific to this method
//
// Do some generic things across all strategies
//
}
public function execute(string $param1)
{
// Do something specific to this method
//
// Do some generic things across all strategies
//
}
public function execute()
{
// Do something specific to this method
//
// Do some generic things across all strategies
}
的都做很具體的東西,但需要這種不同的參數,然後他們做一些通用的,每一個戰略將做。
你如何找出這些參數的每個功能需求?參數選擇必須是策略的一部分,而不是界面的一部分。 –
是否有可能在構建策略時傳遞所有必需的數據並從策略界面中刪除參數?如果你能做到這一點,那麼也許可以將算法的通用部分移到抽象基本策略。或者讓你的策略接口期望一個數據包(1個模型/對象),並讓策略實現有選擇地使用它的一部分。 – Reasurria