Изучите «Фасадный режим» за три минуты

Java

предисловие

Только лысина может стать сильнее

Просмотрите шаблоны проектирования, которые я написал ранее:

Будь то собеседование или личное совершенствование, шаблоны проектирования необходимо изучить. Давайте объясним сегодняфасад(Внешний вид) Режим~

В прошлый раз я поделился хорошей статьей: "Почему Alibaba запрещает инженерам напрямую использовать API в системах логирования (Log4j, Logback)

[Обязательно] API в системе логирования (Log4j, Logback) нельзя использовать напрямую в приложении, вместо этого следует использовать API в фреймворке логирования SLF4J.Использование бревенчатого каркаса фасадного режима способствует сопровождению и унификации методов обработки бревен разных классов..

Я не знаю, есть ли у вас какие-либо знания о Facade Mode, но я прошел «Zen of Design Mode» и обнаружил, что это очень просто, поэтому я поделюсь им с вами здесь.

1. Введение в режим фасада (внешнего вида)

1.1 Реалистичный пример рисунка фасада

Главный выключатель питания можетКонтролируйте все приборыоткрытое или закрытое состояние.

Будь то кондиционер, холодильник, телевизор, компьютер, вентилятор и т. д., все электроприборы управляются этим выключателем. Пока этот переключатель будет замкнут, все приборы будут задействованы (выключены вместе).

Главный выключатель питания (переключатель) является оформлением режима внешнего вида системы.

1.2 Назад в мир кода

Например, наш дом теперь имеет несколько электроприборов, таких как кондиционеры, холодильники и компьютеры.


// 冰箱
public class Fridge {

 // 关闭冰箱
 public void turnOff() {

 }

 // 开冰箱灯..减低冰箱温度..调高冰箱温度...
}


// 电视
public class Television {


 // 关闭电视
 public void turnOffTV() {
 System.out.println("关闭电视");
 }

 // 切换电视节目..减低电视声音..调高电视声音...
 public void doSomething() {
 System.out.println("切换电视节目..减低电视声音..调高电视声音...");
 }
}

// 电脑
public class Computer {
 // 关闭电脑
 public void turnOffComputer() {
 System.out.println("关闭电脑");
 }

 // 使用电脑干别的事~
 public void doSomething() {
 System.out.println("使用电脑干别的事~");
 }

} 

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


 // 我要关闭电视、电脑、空调
 public static void main(String[] args) {
 new Computer().turnOffComputer();
 new Fridge().turnOffFridge();
 new Television().turnOffTV();

 // 当然了,一个正常的家庭不单单只有这么点电器的。
 // 如果某一天我想关闭家里所有的电器,就需要重复new 个对象,调用其turn offer方法
 } 

Очень хлопотно выключать по одному, поэтому у нас есть электрический выключатель:


// 电闸
public class ElectricBrake {
 private Computer computer = new Computer();
 private Fridge fridge = new Fridge();
 private Television television = new Television();

 // 关闭所有电器
 public void turnOffAll() {
        computer.turnOffComputer();
        fridge.turnOffFridge();
        television.turnOffTV();
 }
} 

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


// 我要关闭所有电器
 public static void main(String[] args) {
 ElectricBrake brake = new ElectricBrake();
        brake.turnOffAll();
 } 

Опытные студенты могут подумать,Разве это не просто еще один уровень инкапсуляции?? ? Это фасадный режим? ? Ну да, это фасадный режим

1.3 Введение в режим фасада

Дзен шаблонов проектирования:

Требуется, чтобы связь между внешней и внутренней подсистемой осуществлялась через единый объект. Шаблон Facade предоставляет высокоуровневый интерфейс, упрощающий использование подсистемы.

Общая диаграмма классов для шаблона фасада очень проста:

В нашем примере подсистемы эквивалентны компьютерам, холодильникам и телевизорам. Единый объект эквивалентен нашему электрическому выключателю. Выключаем все электроприборы через электровыключатель (чтобы не надо было искать компьютеры, холодильники, телевизоры, чтобы выключать по одному)

Используется фасадный режим,Сделайте звонки клиентов проще!

1.4 Преимущества и недостатки фасадного режима

преимущество:

  1. Уменьшить взаимозависимость системы. При использовании шаблона фасада все зависимости являются зависимостями от объекта фасада, независимого от подсистемы.

  2. Повышенная гибкость. Как бы ни менялась подсистема, пока это не влияет на объект фасада, вы можете свободно перемещаться.

недостаток:

  1. Не соответствует принципу открытия и закрытия, закрыто для модификации, открыто для расширения. Например, в нашем примере выше, если вы хотите присоединиться к новому устройству, чтобы сомкнуть ряды, можно изменить только фасад объекта.turnOffAll()код метода.

Наконец

Считаете ли вы, что шаблон оформления фасада — это одно и то же? Проще говоря, он инкапсулирует слой подсистем и предоставляет высокоуровневый интерфейс (фасадный объект) для облегчения клиентских вызовов.

Рекомендуемое чтение и ссылки:

Рад поделиться и экспортироватьгалантерейные товарыОбщедоступный номер технологии Java: Java3y. Подпишитесь, чтобы получать огромные видеоресурсы!

帅的人都关注了

Текст был включен в мой репозиторий GitHub, добро пожаловать, звезда: