Php 是否存在与此解决方案相关的设计模式?
有一个我经常使用的解决方案,我想知道是否有与此解决方案相关的设计模式: 我想修改一个对象的属性,我想在不同的类中分离每个职责,并且能够更容易地添加/删除这些职责 是否存在命名此解决方案的模式?这是一个很好的解决方案,还是有另一种模式可以更好地解决它 谢谢大家!Php 是否存在与此解决方案相关的设计模式?,php,oop,design-patterns,Php,Oop,Design Patterns,有一个我经常使用的解决方案,我想知道是否有与此解决方案相关的设计模式: 我想修改一个对象的属性,我想在不同的类中分离每个职责,并且能够更容易地添加/删除这些职责 是否存在命名此解决方案的模式?这是一个很好的解决方案,还是有另一种模式可以更好地解决它 谢谢大家! class Choice { private $isSelected; private $isRight; } class ChoiceModifierInterface { public function
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开发人员,但它看起来是 我通常使用复合模式的方式是,例如日志记录。当我想同时登录到多个地方(比如文件、一些云错误跟踪系统、调试窗口等等)时,我会创建单个记录器抽象,然后在所有记录器中实现这个抽象,并创建复合记录器。复合记录器还实现记录器接口,它包含所有其他记录器的集合。复合记录器的唯一职责是将调用委托给它包含的所有记录器。这样,只需在客户端代码中进行一次调用,就可以登录到多个位置 我从未使用复合模式来修改对象状态,但我可以想象,在某些场景中,这可能是一个很好的解决方案