我的演示文稿中有几个需要相互交互的“小部件”,但交互已经变得足够复杂,需要一个新对象来处理交互。
在尝试通过中介者作为该对象进行工作时,我对如何有效地构建参与者感到困惑。中介者必须了解小部件,而小部件也必须了解中介者。
使用下面的玩具类,有人可以向我展示构造函数的外观以及它们通常创建的顺序吗?
Cheers,
Berryl
class WidgetOne {
Mediator _mediator;
}
class WidgetTwo {
Mediator _mediator;
}
class Mediator {
WidgetOne _widgetOne;
WidgetTwo _widgetTwo;
}
这确实取决于许多其他情况,但我可能会这样做:
class Mediator {
WidgetOne _widgetOne;
WidgetTwo _widgetTwo;
void setWidgetOne(WidgetOne one){_widgetOne = one;}
void setWidgetTwo(WidgetTwo one){_widgetTwo = one;}
}
class WidgetOne {
Mediator me
void WidgetOne(Mediator me){
this.me = me
me.setWidgetOne(this);
}
}
class WidgetTwo {
Mediator me
void WidgetTwo(Mediator me){
this.me = me
me.setWidgetTwo(this);
}
}
Mediator me = new Mediator();
WidgetOne one = new WidgetOne(me);
WidgetTwo two = new WidgetTwo(me);
当然,如果没有其他需要了解小部件的信息,那么我将摆脱设置器并只使用以下内容:
class Mediator {
WidgetOne _widgetOne;
WidgetTwo _widgetTwo;
void Mediator(){
_widgetOne = new WidgetOne(this);
_widgetTwo = new WidgetTwo(this);
}
}
class WidgetOne {
Mediator me
void WidgetOne(Mediator me){
this.me = me
}
}
class WidgetTwo {
Mediator me
void WidgetTwo(Mediator me){
this.me = me
}
}
其他几个简短的...简短的形式:
// Factory:
class Mediator {
WidgetOne _widgetOne;
WidgetTwo _widgetTwo;
void Mediator(){
_widgetOne = WidgetFactory.getW1(this);
_widgetTwo = WidgetFactory.getW2(this);
}
}
class W1 {
Mediator me
void W1(){
}
void setMediator(Mediator med){me = med}
}
class WidgetFactory {
W1 getW1(Mediator me){ W1 w = new W1(); w.setMediator(me); return me}
}
// Centralized "model" (variant of factory)
class Mediator {
W1 w1;
static Mediator getInstance(){ return inst; }// See Singleton
void registerW1(W1 w){w1 = w; w.setMediator(this);}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)