gpt4 book ai didi

design-patterns - 中介者模式及创建

转载 作者:行者123 更新时间:2023-12-04 06:54:42 25 4
gpt4 key购买 nike

我在演示文稿中涉及多个“小部件”,它们需要相互交互,但交互已经变得足够复杂,需要一个新对象来处理交互。

在尝试通过作为对象的调解器工作时,我对如何有效构建参与者感到困惑。中介者必须了解小部件,而小部件必须了解中介者。

有人可以使用下面的玩具类向我展示构造函数的外观以及它们通常的创建顺序吗?

干杯,
贝瑞尔

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);

当然,如果没有其他需要知道的小部件,那么我会去掉 setter 并只使用这个:

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);}
}

关于design-patterns - 中介者模式及创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6419004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com