В чем разница между Абстракцией и Фасадом?

StackOverflow https://stackoverflow.com/questions/2288643

  •  21-09-2019
  •  | 
  •  

Вопрос

В чем разница между "Абстракцией" и "Фасадом"?

Есть ли вообще разница?Или эти термины взаимозаменяемы?

Это было полезно?

Решение

В рисунок фасада это упрощенный интерфейс к более крупной, возможно, более сложной кодовой базе.Кодовая база может представлять собой один класс или несколько.Фасад просто предоставляет вам простой интерфейс к нему.

Абстракция, используется для представления концепции, но не для привязки к какому-либо конкретному экземпляру.(То есть:Абстрактный класс).Это не подразумевает упрощения (как это делает шаблон facade), а скорее создание "общего" интерфейса или представления.

Другие советы

Фасад это специфический шаблон проектирования, предназначенный для скрытия внутреннего содержимого пакета / модуля от его клиентов за четко определенным интерфейсом.Обычно он скрывает несколько интерфейсов / классов за одним общим, отсюда и его название.

"Абстракция" - это общий термин, означающий сокрытие конкретных деталей чего-либо от внешнего мира.

Таким образом, эти два термина не являются взаимозаменяемыми.

Фасад - это образец дизайна GoF, очень специфичный.По сути, речь идет о сокрытии чрезмерно сложной функциональности от основной части вашего приложения.

Абстракция - это более расплывчатый термин, связанный со скрытием функциональности сервиса от его клиента.

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

Фасад - это лицо (буквально говоря), поэтому аналогия с базовым классом не совсем верна.Фасад - это скорее интерфейс, поэтому он не обязательно должен быть связан с вещами, которые его используют.Я думаю об этом скорее как о маске.Например, в моем классе будет "одноразовая" маска.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top