Показаны различия между двумя версиями страницы.
bbextendnohost [2013/12/20 21:33] kpmy created |
bbextendnohost [2020/10/29 07:08] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Метод расширения абстракций System ====== | ||
- | ===== Предпосылки ===== | ||
- | Системный слой BlackBox представлен набором абстрактных интерфейсов, | ||
- | |||
- | На примере простой абстракции местоположение файла Files.Locator (далее **локатор**) рассмотрим возможные варианты решения. | ||
- | |||
- | [[http:// | ||
- | > Файловый локатор представляет папку в файловой системе. | ||
- | > Локаторы используются в Блэкбоксе и иногда в командах, | ||
- | |||
- | Таким образом, | ||
- | В большинстве случаев реализация локатора содержит указание на физическую папку на диске компьютера или в сети, и путь к такой папке представлен [[http:// | ||
- | |||
- | Однако расширяемый интерфейс локатора позволяет реализовать местоположение файла, у которого отсутствует текстовая строка. Следовательно, | ||
- | |||
- | Поэтому в Files.Locator подобная возможность отсутствует. | ||
- | |||
- | И все же, при написании прикладных компонентов могут возникать задачи которые требуют доступ к строке адреса файла на диске, отображение пользователю реального пути к выбранному файлу, сохранение адреса конкретного файла в реестре, | ||
- | |||
- | ===== Что требуется? | ||
- | Расширить возможности базового типа Files.Locator в ряде задач при сохранении неизменности интерфейса Files.Locator, | ||
- | |||
- | ===== Варианты решения ===== | ||
- | {{ : | ||
- | ==== Изменение алгоритма компонента ==== | ||
- | Наиболее очевидный способ: | ||
- | ==== Прямое использование реализации локатора ==== | ||
- | Наиболее простой способ, | ||
- | ==== Герметизация абстракции локатора внутри компонента ==== | ||
- | После применения к платформо-зависимому компоненту [[bbnohost|метод герметизации]] получится гибкая связка компонента и хост-компонента, | ||
- | ==== Использование возможностей расширения абстракции ==== | ||
- | |||
- | |||
- | |||
- | |||
- | |||