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

Каково различие между 'Абстракцией' и 'Фасадом'?

Существует ли различие вообще? Или действительно ли условия являются взаимозаменяемыми?

5
задан willem 18 February 2010 в 12:45
поделиться

4 ответа

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

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

11
ответ дан 18 December 2019 в 10:44
поделиться

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

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

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

3
ответ дан 18 December 2019 в 10:44
поделиться

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

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

1
ответ дан 18 December 2019 в 10:44
поделиться

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

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

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

1
ответ дан 18 December 2019 в 10:44
поделиться