Design patterns 不应该';访问者模式不能重构吗?
目前我正在做一个项目,该项目利用了。在使用这种模式时,我发现自己写的评论如下:Design patterns 不应该';访问者模式不能重构吗?,design-patterns,visitor-pattern,Design Patterns,Visitor Pattern,目前我正在做一个项目,该项目利用了。在使用这种模式时,我发现自己写的评论如下: *@param visitorienterface$visitor要访问的访问者。 访问者模式由以下界面组成: VisitorInterface { public function visit($object); } VisitableInterface { public function accept(VisitorInterface $visitor); } 现在我的问题是:这不应该是相反的吗
*@param visitorienterface$visitor要访问的访问者。
访问者模式由以下界面组成:
VisitorInterface {
public function visit($object);
}
VisitableInterface {
public function accept(VisitorInterface $visitor);
}
现在我的问题是:这不应该是相反的吗
VisitorInterface {
public function accept($object);
}
VisitableInterface {
public function visit(VisitorInterface $visitor);
}
因为现在访客会接受某个东西来访问,因为访客应该是某个东西来访问某个东西。而visitable对象现在将接受访问者
例如:
现在我们有了一个接待客人的聚会。这些来访者可以被要求接受聚会上的东西来做些什么
我希望能够很好地解释我的想法,以表达我的“关注”。请不要因为我试图打破设计模式而责怪我:-)方法是在带有参数的对象上调用的,而不是在参数上调用的。所以,如果您调用
human.visit(party)
,这意味着human访问了某个对象,并且在参数中指定了what-party
class Party implements VisitableInterface {
public function visit(VisitorInterface $visitor) {
$visitor->accept($this);
}
}
class Human implements VisitorInterface {
public function accept($object) {
// do something with object
}
}