Latest web development tutorials

motif de façade

motif de façade (Motif de façade) cache la complexité du système au client fournit un client peut accéder à l'interface système. Ce type de modèles de conception fait partie d'modèle structurel, il ajoute une interface à un système existant, afin de masquer la complexité du système.

Ce modèle implique une classe unique, qui fournit une approche simplifiée aux demandes des clients et des appels de délégué aux méthodes de la classe des systèmes existants.

introduction

Intention: Le sous - système fournit un ensemble d'interfaces dans une interface cohérente, schéma définit l'apparence d'une interface de haut niveau qui rend le sous - système plus facile à utiliser.

La principale solution: réduire la complexité de l' accès à des sous - systèmes internes lorsque des systèmes complexes, simplifier le client avec l'interface.

Quand l'utiliser: 1, le client n'a pas besoin de connaître le système à l' intérieur des liens complexes, l'ensemble du système doit seulement fournir un "réceptionniste" peut être.2, l'orifice d'entrée définissent le système.

Comment réparer: le client est pas couplé avec le système, le système couplé avec l'apparition de la classe.

Le code clé: entre le système client et ajouter une couche de complexité, cette fois sera la séquence d' appel, les dépendances et autres manipulations.

Exemples d'application: 1, aller à l'hôpital, vous pouvez aller à l' enregistrement, les consultations externes, le prix désigné, dispensaire, les patients ou membres de la famille des patients trouvent très compliqué, s'il est prévu le personnel de la réception, il suffit de laisser le personnel de la réception à traiter, très pratique.2, JAVA trois niveaux modèle de développement.

Avantages: 1, pour réduire le système sont interdépendants.2, augmenter la flexibilité. 3, pour améliorer la sécurité.

Inconvénients: ne respecte pas le principe de l' ouverture et la fermeture, si vous voulez changer les choses trop de problèmes, l' héritage réécriture sont inappropriés.

Scénarios d' utilisation:1, pour donner accès à des modules externes sont des modules ou sous - systèmes complexes. 2, sous-systèmes relativement indépendants. 3, la prévention des risques de personnel bas niveau.

Remarque: Dans une structure hiérarchique, vous pouvez utiliser le système pour définir l'apparence du mode pour chaque couche d'entrée.

réalisation

Nous allons créer une interfacede formeet de mise en œuvre de l'interfaceShapedes classes d'entités. L'étape suivante consiste à définir uneShapeMakerde classe de lapeau.

classeShapeMakerutilise une classe d'entité pour représenter un utilisateur appels à ces classes.FacadePatternDemo,nos classes de démonstration à l' aide de classeShapeMakerpour afficher les résultats.

motif de façade diagramme UML

Etape 1

Créer une interface.

Shape.java

public interface Shape {
   void draw ();
}

Etape 2

Créer classe d'entité qui implémente l'interface.

Rectangle.java

public class Rectangle implémente Shape {

   @Override
   tirage public void () {
      System.out.println ( "Rectangle :: draw ()");
   }
}

Square.java

public class place implémente Shape {

   @Override
   tirage public void () {
      System.out.println ( "Square :: draw ()");
   }
}

Circle.java

Cercle public class implémente Shape {

   @Override
   tirage public void () {
      System.out.println ( "Cercle :: draw ()");
   }
}

Etape 3

Créer une apparence de classe.

ShapeMaker.java

public class ShapeMaker {
   cercle Forme privée;
   rectangle Forme privée;
   carré Forme privée;

   ShapeMaker publique () {
      cercle = new Circle ();
      rectangle = new Rectangle ();
      carré = new Carré ();
   }

   drawCircle public void () {
      circle.draw ();
   }
   public void drawRectangle () {
      rectangle.draw ();
   }
   public void drawSquare () {
      square.draw ();
   }
}

Etape 4

L'utilisation de différents types de classe de la peau pour dessiner la forme.

FacadePatternDemo.java

public class FacadePatternDemo {
   main (String [] args) {public static void
      ShapeMaker ShapeMaker = new ShapeMaker ();

      shapeMaker.drawCircle ();
      shapeMaker.drawRectangle ();
      shapeMaker.drawSquare ();		
   }
}

Etape 5

Vérifiez la sortie.

Cercle :: draw ()
Rectangle :: draw ()
Place :: draw ()