Latest web development tutorials

Фасад шаблон

Фасад шаблон (Фасад шаблон) скрывает сложность системы к клиенту обеспечивает клиент может получить доступ к интерфейсу системы. Этот тип шаблонов проектирования принадлежат структурной модели, добавляет интерфейс к существующей системе, чтобы скрыть сложность системы.

Эта модель включает в себя единственный класс, который обеспечивает упрощенный подход к запросам клиентов и делегировать вызовы к существующим методам системы класса.

введение

Намерение: Подсистема обеспечивает набор интерфейсов в единый интерфейс, схема определяет внешний вид интерфейса высокого уровня , что делает проще в использовании подсистема.

Основное решение: уменьшить сложность доступа внутренних подсистем , когда сложные системы, упростить клиент с интерфейсом.

Когда использовать: 1, клиент не должен знать систему внутри сложных связей, вся система нужно только обеспечить "регистратору" может быть.2, входное отверстие определяют систему.

Как исправить: клиент не связан с системой, в системе , связанной с появлением класса.

Код ключа: между системой клиента и добавить слой сложности, на этот раз будет вызывать последовательность, зависимостей и других действий.

Примеры применения: 1, иди в больницу, вы можете перейти к регистрации, амбулаторной, обозначенная цена, амбулатории, пациент или члены семьи пациентов найти его очень сложно, если предусмотрены прием сотрудников, просто дайте прием сотрудников , чтобы иметь дело с, очень удобно.2, JAVA модель развития трехуровневой.

Преимущества: 1, уменьшить систему являются взаимозависимыми.2, повысить гибкость. 3, для повышения уровня безопасности.

Недостатки: не соответствует принципу открытия и закрытия, если вы хотите , чтобы изменить положение вещей слишком много хлопот, наследование , переписывают неуместны.

Сценарии использования: 1, чтобы обеспечить доступ к внешним модулям сложные модули или подсистемы.2, относительно независимые подсистемы. 3, предотвращение кадровых рисков низкого уровня.

Примечание: В иерархической структуре, вы можете использовать систему для определения внешнего вида режима ввода для каждого слоя.

реализация

Мы создадим интерфейсShapeи реализациюShapeинтерфейса классов сущностей. Следующим шагом является определение класса кожиShapeMaker.

ShapeMakerкласс использует класс сущностей для представления пользователь обращается к этим классам.FacadePatternDemo,наши демонстрационные классы , использующие классShapeMakerдля отображения результатов.

Фасад модели UML диаграмма

Шаг 1

Создайте интерфейс.

Shape.java

Открытый интерфейс Shape {
   недействительным ничья ();
}

Шаг 2

Создать класс сущностей, который реализует интерфейс.

Rectangle.java

Открытый класс Прямоугольник реализует Shape {

   @Override
   общественного недействительными ничья () {
      System.out.println ( "Прямоугольник :: ничья ()");
   }
}

Square.java

Открытый класс Square реализует Shape {

   @Override
   общественного недействительными ничья () {
      System.out.println ( "Площадь :: ничья ()");
   }
}

Circle.java

Открытый класс Circle реализует Shape {

   @Override
   общественного недействительными ничья () {
      System.out.println ( "Круг :: ничья ()");
   }
}

Шаг 3

Создайте класс внешний вид.

ShapeMaker.java

Открытый класс ShapeMaker {
   частная форма круг;
   частная форма прямоугольника;
   частная форма квадрата;

   общественного ShapeMaker () {
      круг = новый круг ();
      прямоугольник = новый прямоугольник ();
      квадрат = новый квадрат ();
   }

   общественного недействительными DrawCircle () {
      circle.draw ();
   }
   общественного недействительными DrawRectangle () {
      rectangle.draw ();
   }
   общественного недействительными drawSquare () {
      square.draw ();
   }
}

Шаг 4

Использование различных типов кожи класса, чтобы нарисовать форму.

FacadePatternDemo.java

Открытый класс FacadePatternDemo {
   государственной статической силы основных (String []) {агдз
      ShapeMaker shapeMaker = новый ShapeMaker ();

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

Шаг 5

Проверьте выход.

Круг :: ничья ()
Прямоугольник :: ничья ()
Площадь :: ничья ()