外观设计模式和中介设计模式有什么区别?我想了解在哪种情况下在这两种设计模式之间选择哪种设计模式。我浏览了以下链接,发现两者在用例方面都是相同的。
立面设计模式:http://www.tutorialspoint.com/design_pattern/facade_pattern.htm
中介者设计模式:http://www.java2s.com/Tutorial/Java/0460__Design-Pattern/CoordinatingYourObjectswiththeMediatorPatterns.htm
我对以下代码段感到困惑,这些代码段在两种设计模式中看起来都很相似。
门面类:
public class ShapeMaker {
private Shape circle;
private Shape rectangle;
private Shape square;
public ShapeMaker() {
circle = new Circle();
rectangle = new Rectangle();
square = new Square();
}
public void drawCircle(){
circle.draw();
}
public void drawRectangle(){
rectangle.draw();
}
public void drawSquare(){
square.draw();
}
}
中介类:
public class Mediator {
Welcome welcome;
Browse browse;
Purchase purchase;
Exit exit;
public Mediator() {
welcome = new Welcome(this);
browse = new Browse(this);
purchase = new Purchase(this);
exit = new Exit(this);
}
public void handle(String state) {
if (state.equals("welcome.shop")) {
browse.execute();
} else if (state.equals("shop.purchase")) {
purchase.execute();
} else if (state.equals("purchase.exit")) {
exit.execute();
}
外观公开现有的功能,中介者添加到现有的功能。
如果您查看外观示例,您会发现您没有添加任何新功能,只是为当前对象提供了新的视角。例如,Circle 已经存在,而您只是使用drawCircle 方法抽象出circle。
如果你查看你的中介类,你会发现该方法handle()
通过检查状态提供附加功能。如果去掉这些条件,就会得到外观模式,因为附加功能消失了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)