В чем разница между абстракцией и фасадом? - PullRequest
5 голосов
/ 18 февраля 2010

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

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

Ответы [ 4 ]

11 голосов
/ 18 февраля 2010

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

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

3 голосов
/ 18 февраля 2010

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

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

Так что эти два понятия не являются взаимозаменяемыми.

1 голос
/ 18 февраля 2010

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

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

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

1 голос
/ 18 февраля 2010

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

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

...