Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Топ:
Оснащения врачебно-сестринской бригады.
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Интересное:
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Дисциплины:
2020-11-03 | 158 |
5.00
из
|
Заказать работу |
|
|
Проектирование с учетом будущих изменений
при создании объекта явно указывается класс. Привязывает к конкретной реализации, а не к конкретному интерфейсу. Это может осложнить изменение объекта в будущем. Чтобы уйти от такой проблемы, создавайте объекты косвенно. Паттерны проектирования: абстрактная фабрика.
зависимость от конкретных операций. Задавая конкретную операцию, вы ограничиваете себя единственным способом выполнения запроса. Если же не включать запросы в код, то будет проще изменить способ удовлетворения запроса как на этапе компиляции, так и на этапе выполнения. Паттерны проектирования: цепочка обязанностей, команда;
зависимость от аппаратной и программной платформ. Паттерны проектирования: абстрактная фабрика, мост;
зависимость от представления или реализации объекта. Если клиент «знает», как устроен объект, то при изменении объекта может оказаться необходимым изменить и клиента. Сокрытие этой информации от клиентов поможет уберечься от каскада изменений. Паттерны проектирования: абстрактная фабрика, мост, хранитель, заместитель;
Зависимость от алгоритмов. Зависящие от алгоритмов объекты придется переписывать при каждом изменении алгоритма. Паттерны проектирования: итератор, стратегия, шаблонный метод, посетитель;
Сильная связанность. Сильно связанные между собой классы трудно использовать порознь, так как они зависят друг от друга. Паттерны проектирования: абстрактная фабрика, мост, цепочка обязанностей, команда, фасад, наблюдатель;
Расширение функциональности за счет порождения подклассов. Для определения подкласса необходимо ясно представлять себе устройство родительского класса. Кроме того, порождение подклассов ведет к комбинаторному росту числа классов.
|
Неудобства при изменении классов. Иногда нужно модифицировать класс, но делать это неудобно(нет исходного кода, влечёт изменения множества подклассов). Паттерны проектирования: адаптер, декоратор, посетитель.
Концепция программного компонента. Компоненты развертывания.
Понятие программного компонента (ПК) (software component)
В архитектуре ПО ПК (программный модуль) – произвольный и элемент структуры системы, решающий некоторые подзадачи и взаимодействующий с окружением через определенный интерфейс.
На диаграммах UML ПК (единицы сборки) — файлы с кодом, бинарные файлы, какие-либо документы, входящие в состав системы.
Компоненты развертывания – блоки, из которых строится компонентное программное обеспечение.
Компонент развертывания – структурная единица программной системы, обладающая четко определенным интерфейсом. Такой компонент независимо, удален или добавлен в состав некоторой системы, может включаться в состав систем других поставщиков.
Компонентный каркас (component framework)
Состав:
Компонентная модель (component model) – набор правил определения интерфейсов компонентов и их реализаций, а также правил, по которым компоненты работают в системе (регламентирующие жизненный цикл компонента) и взаимодействуют друг с другом
Набор базовых служб (basic services) обеспечивающих например, обнаружение компонентов в среде (сетевой), передачу данных между компонентами (через сетевое взаимодействие)
Примеры:
различные реализации J2EE,
.NET,
CORBA.
Компонентные фреймворки. Компонентная модель.
Структура фреймворка
Основы принципов внедрения зависимостей. Инверсия управления.
Внедрение зависимости.
Внедрение зависимостей — это стиль настройки объекта, при котором поля объекта задаются внешней сущностью. DI — это альтернатива самонастройке объектов.
class ClassA { var classB: ClassB }
Класс ClassA содержит экземпляр класса ClassB, поэтому мы можем сказать, что класс ClassA зависит от класса ClassB. Классу ClassA нужен класс ClassB для корректной работы.
|
Согласно первому подходу з, а во втором подходе мы переместили обработку зависимостей из зависимого класса в пользовательский класс.
Варианты создания:
class ClassA {
var classB: ClassB
fun someMethodOrConstructor() { classB = ClassB() classB.doSomething() }
}
Недостатки
§ когда нам нужно использовать ClassA, мы будем вынуждены использовать и ClassB, и заменить ClassB чем-то другим будет невозможно.
§ ClassA невозможно протестировать
§ СlassA должен знать, как создать ClassC и использовать его для создания ClassB.
class ClassA {
var classB: ClassB
constructor(classB: ClassB){ this.classB = classB }
}
Недостатки
|
|
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!