Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Альтернативы
Недавние
Show all languages
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Интерфейс (шаблон проектирования)

Из Википедии — свободной энциклопедии

Интерфейс
Interface
Описан в Design Patterns Нет

Интерфейс (англ. interface) — основной шаблон проектирования [1](повторяемая архитектурная конструкция), являющийся общим методом для структурирования компьютерных программ для того, чтобы их было проще понять. В общем, интерфейс — это класс, который обеспечивает программисту простой или более программно-специфический способ доступа к другим классам.

Интерфейс может содержать набор объектов и обеспечивать простую, высокоуровневую функциональность для программиста (например, Шаблон Фасад); он может обеспечивать более чистый или более специфический способ использования сложных классов («класс-обёртка»); он может использоваться в качестве «клея» между двумя различными API (Шаблон Адаптер); и для многих других целей.

Другими типами интерфейсных шаблонов являются: Шаблон делегирования, Шаблон компоновщик, и Шаблон мост.

Примеры

C++

В противоположность Java (язык программирования)[2], где интерфейсы распространены, этот шаблон нечасто используется в C++. Однако, иногда, это может помочь сократить зависимости. Для библиотек, использующих классы-обёртки для скрытия деталей внутренней реализации, шаблон «интерфейс» может повысить читаемость кода.

Поскольку класс Facade является интерфейсом библиотеки, то его h-файл должен быть доступен пользователю библиотеки. Поэтому он должен быть помещён в include-каталог библиотеки. Но этот класс Facade возможно нуждается в некоторых свойствах других классов библиотеки. Поэтому его h-файл должен включать h-файлы других классов. Значит эти файлы также должны быть доступны, следовательно они также должны быть помещены в include-каталог библиотеки. А это нарушает стратегию определения только одних интерфейсов библиотеки в include-каталог. Эта трудность может быть решена использованием паттерна Interface.

Для реализации интерфейса к классу A требуется реализовать класс A_Interface, который будет определять публичные методы класса A как абстрактные функции. Класс A должен быть унаследован от класса A_Interface. Не забудьте объявить деструктор интерфейса A_Interface как виртуальный!

В таком случае заголовочный файл (h-файл) класса A может располагаться в source-каталогах библиотеки, в то время как заголовочный файл класса A_Interface останется в include-каталоге.

Поскольку интерфейсный класс является абстрактным и класс, реализующий интерфейс, неизвестен извне библиотеки, для создания объектов класса A требуется наличие фабрики (factory). Имеет смысл создать метод класса A_Interface, который будет работать как метод-фабрика (factory method).

См. также

Примечания

  1. СИМОНОВА О.Н. ШАБЛОН ПРОЕКТИРОВАНИЯ MVC КАК ЭФФЕКТИВНОЕ СРЕДСТВО ПОСТРОЕНИЯ АРХИТЕКТУРЫ ПРОГРАММНОЙ СИСТЕМЫ // СОВРЕМЕННЫЕ НАУКОЕМКИЕ ТЕХНОЛОГИИ. — 2014. — Т. 1, № 5-2. — С. 96.
  2. Хусаинов И.Г. ЯЗЫК ПРОГРАММИРОВАНИЯ JAVA / // ХРОНИКИ ОБЪЕДИНЕННОГО ФОНДА ЭЛЕКТРОННЫХ РЕСУРСОВ НАУКА И ОБРАЗОВАНИЕ. — 2014. — Т. 1, № 12. — С. 43.

Литература

Эта страница в последний раз была отредактирована 28 ноября 2022 в 04:39.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).