Java Facade模式-请求流
我知道Facade模式通过隐藏复杂的子系统交互来提供更简单的接口 我指的是以下wikipedia uml on Facade模式: 到门面的通信/调用是否为单向请求,即只有Client1/Client2发送请求并从门面接收响应, 但是Facade无法向Client1/Client2发起请求? 我说Facade提供单向(客户机->Facade)请求交互(通过更简单的接口)是正确的吗?其中as中介促进了跨系统/类的双向(客户机中介)交互 你能提供一个强调这一点的参考吗? (1) 与门面的通信/呼叫是否是单向的 请求,即只有Client1/Client2发送请求并接收请求 来自Facade的响应,但Facade无法向 客户1/客户2 对。这就是为什么他们被称为客户。Facade类是为客户机工作的实际服务器(不要不必要地与web服务器混合)。当客户端不需要知道实际发生了什么,而只需要一个高级抽象时,Facade是有意义的 例: 在本例中,作为客户机,我只想调用Java Facade模式-请求流,java,design-patterns,facade,mediator,Java,Design Patterns,Facade,Mediator,我知道Facade模式通过隐藏复杂的子系统交互来提供更简单的接口 我指的是以下wikipedia uml on Facade模式: 到门面的通信/调用是否为单向请求,即只有Client1/Client2发送请求并从门面接收响应, 但是Facade无法向Client1/Client2发起请求? 我说Facade提供单向(客户机->Facade)请求交互(通过更简单的接口)是正确的吗?其中as中介促进了跨系统/类的双向(客户机中介)交互 你能提供一个强调这一点的参考吗? (1) 与门面的通信/呼叫
room.powerOff()代码>。我对内部发生的事情不感兴趣
(2) 我说的立面提供单向性是正确的吗
(客户端->外观)请求交互(通过更简单的接口),其中
as中介促进双向(客户端中介)
跨系统/类的交互
(a) Facade提供单向(客户端->Facade)请求交互(通过更简单的接口)->正确
(b) 中介促进双向(客户端中介)交互->正确。这有点像客户端也是子系统(在Facade中)。:) 是的,你在这两方面都是正确的。以下是相关的引文,直接摘自GoF书籍,第282页(我的重点)
Facade与Mediator的不同之处在于它抽象了对象的子系统
提供更方便的界面其协议是单向的;也就是说,Facade对象对子系统类发出请求,但反之亦然。在里面
相反,Mediator支持同事对象不支持或不支持的合作行为
无法提供,且协议是多向的
还要注意,Facade被分类为一种结构模式,而Mediator是一种行为模式。如果Facade可以启动请求,那么它将是行为化的。谢谢,但是您能提供一个强调这一点的参考吗?Facade->Mediator->
public class Bulb{
public void on(){
//logic to turn on the bulb.
}
public void off(){
//logic to turn off the bulb.
}
}
public class Fan{
public void on(){
//logic to turn on the fan.
}
public void off(){
//logic to turn off the fan.
}
}
public class Room{
private Bulb bulb;
private Fan fan;
public void powerOff(){
this.bulb.off();
this.fan.off();
}
}