[Design Pattern] Strukturelle Muster: Facade


#1
Hallo,

dieser Beitrag erklärt das Strukturelle Muster (Structural Pattern): Façade

Eine Facade ist eine Komponente, welche die Komplexität von dahinterliegenden Subsystemen / Komponenten versteckt und die Funktionalität über eine einfach zu verwendende Schnittstelle verfügbar macht.

Java:
package de.tutorials.design.patterns.structural;

import org.jpatterns.gof.FacadePattern;


public class FacadeExample {
  public static void main(String[] args) {
    Server server = new Server();
    ServiceFacade facade = new ServiceFacadeImpl(server);
    
    Client client = new Client(facade);
    client.op();
    
  }
  
  static class Client{
    ServiceFacade facade;

    public Client(ServiceFacade facade) {
      this.facade = facade;
    }
    
    public void op(){
      facade.op();
    }
  }
  
  @FacadePattern
  static interface ServiceFacade{
    void op();
  }
  
  static class ServiceFacadeImpl implements ServiceFacade{

    Server server;
    
    public ServiceFacadeImpl(Server server) {
      this.server = server;
    }

    @Override
    public void op() {
      server.s1.op1();
      server.s2.op2_A();
      server.s2.op2_B();
      server.s3.op3();
    }    
  }
  
  static class Server{
    Service1 s1 = new Service1Impl();
    Service2 s2= new Service2Impl();
    Service3 s3= new Service3Impl();
  }
  
  static interface Service1{
    void op1();
  }
  
  static interface Service2{
    void op2_A();
    void op2_B();
  }
  
  static interface Service3{
    void op3();
  }
  
  static class Service1Impl implements Service1{
    public void op1() {
      System.out.println("op1");
    }
  }
  
  static class Service2Impl implements Service2{
    public void op2_A() {
      System.out.println("op2_A");
    }
    
    public void op2_B() {
      System.out.println("op2_B");
    }
  }
  
  static class Service3Impl implements Service3{
    public void op3() {
     System.out.println("op3"); 
    }
  }
}
Ausgabe:
Code:
op1
op2_A
op2_B
op3
Gruß Tom