【发布时间】:2017-06-05 22:14:59
【问题描述】:
使用策略模式,如何根据不同的参数来区别对待不同的执行方法?
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 个模型/对象),并让策略实现有选择地使用其中的一部分。
标签: design-patterns strategy-pattern