Facade和Mediator Design模式之间的区别?

dee*_*pak 3 java design-patterns facade mediator

Facade和mediator设计模式之间有什么区别.我想了解哪种设计模式可以在这两种场景中选择.我正在浏览以下链接,并在用例方面发现两者相同.

外观设计模式:http://www.tutorialspoint.com/design_pattern/facade_pattern.htm

Mediator设计模式: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();
   }
}
Run Code Online (Sandbox Code Playgroud)

调解员班:

   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();
      }
Run Code Online (Sandbox Code Playgroud)

Der*_*k_M 6

外观公开现有功能,中介器添加到现有功能.

如果您查看外观示例,您将看到您没有添加任何新功能,只是为当前对象提供了新视角.例如,Circle已经存在,您只是使用drawCircle方法抽象出圆圈.

如果查看mediator类,可以看到该方法handle()通过检查状态来提供其他功能.如果您要取出条件,您将拥有外观模式,因为附加功能已消失.


小智 6

门面模式为您提供了一个简单的界面上的一组连贯的类这相互作用。例如,您家中控制您家中所有设备的遥控器就是一个门面。您只需与遥控器交互,遥控器就会确定应该响应哪个设备以及要发送什么信号。

所述介体图案采用两个对象之间的通信的烦恼,没有两个对象需要直接具有彼此参考。一个现实生活中的例子是发送一封信,你寄出你的信,邮政部门会取走它并确保它会被送到收件人处。没有你告诉他们他们应该走什么路线。这就是中介所做的。

但是,您的示例听起来更像是创建模式(看起来像工厂)和行为模式(状态模式)。我理解你的困惑。