【发布时间】:2015-09-07 16:56:47
【问题描述】:
有一个我经常使用的解决方案,想知道有没有和这个解决方案相关的设计模式:
我想修改一个对象的属性,我想将每个职责分离到不同的类中,并且能够更轻松地添加/删除这些职责。
有 Pattern 来命名这个解决方案吗?这是一个很好的解决方案还是有另一种模式可以更好地修复它?
谢谢!
class Choice
{
private $isSelected;
private $isRight;
}
class ChoiceModifierInterface
{
public function modify();
}
class Selector
{
public function modify(Choice $choice)
{
//check if the user select the question
$choice->isSelected(true);
}
}
class Corrector
{
public function modify(Choice $choice)
{
//check if the question is right
$choice->isRight(true);
}
}
class ChoiceModifier
{
public function add(ModifierInterface $modifier)
{
//add classes
}
public function modify(Choice $choice)
{
foreach ($this->modifiers as $modifier)
{
$modifier->modify($choice);
}
}
}
class Client
{
public function main()
{
$choiceModifier = new ChoiceModifier();
$choiceModifier->add(//add all modifiers);
//run all modifiers
$choiceModifier->modify($choice);
}
}
【问题讨论】:
标签: php oop design-patterns