我想从工厂解决可由用户配置的加权适配器(启用/禁用和重量百分比)。
例子:
- AdapterW ≃ 交易的 20%
- AdapterX ≃ 交易的 30%
- AdapterY ≃ 40% 的交易
- AdapterZ ≃ 交易的 10%
我可以同意所有项目的总和永远不会超过一百 (100%),但有时任何适配器都可能被停用。
我有以下参数:
public function handleAdapter()
{
$isWActive = (boolean)$this->_config[self::W];
$isXActive = (boolean)$this->_config[self::X];
$isYActive = (boolean)$this->_config[self::Y];
$isZActive = (boolean)$this->_config[self::Z];
$WPercentage = (int)$this->_config[self::LOAD_BALANCE_W];
$XPercentage = (int)$this->_config[self::LOAD_BALANCE_X];
$YPercentage = (int)$this->_config[self::LOAD_BALANCE_Y];
$ZPercentage = (int)$this->_config[self::LOAD_BALANCE_Z];
.
.
.
return (self::W | self::X | self::Y | self::Z);
}
如何动态平衡此适配器之间的权重?
编辑
为可执行代码创建了一个要点:https ://gist.github.com/markomafs/5d892d06d6670909f9b4