Здравствуйте, Аноним, Вы писали:
А>Не хочется самому придумывать, навереняка уже есть какие-то уже продуманные задачки.
Задачка — это когда Вам дают что-то решить, а потом показывают правильное решение и сравнивают его с Вашим, так? Да, интересно было бы заиметь подобный задачник с ответами...
Впрочем, попробуйте решить задачу об агрегировании одних объектов другими. Пусть есть пирамида агрегирования. На вершине этой пирамиды находится самый большой агрегат — фабрика (Factory). Фабрика агрегирует несколько разных объектных сред исполнения (runtime system, Environment). Среда исполнения агрегирует в себе (активные) документы (Document). Документы персистентны. Внутри документа есть всякие предметные области (Domain), которые состоят из компонентов (Component), а те в свою очередь состоят из элементарных объектов (Object).
Factory -<- Environment(s) -<- Document(s) -<- Domain(s) -<- Component(s) -<- Object(s)
1) Придумайте способ как, используя GoF-овские паттерны проектирования, можно запрограммировать такую пирамиду агрегации чтобы эту пирамиду можно было "разбирать" сверху вниз не переписывая при этом код нижестоящих агрегатов.
2) Придумайте способ как запрограммировать пирамиду так чтобы можно было вставлять в нее дополнительные слои не переписывая ни строчки кода. Имеется ввиду следующее
Например, было так:
Document -<- Domain
и мы вставили дополнительный слой System
Document -<- System -<- Domain
и при этом нам не надо переписывать код других слоев.
3) Аналогично пункту (2), придумать способ как так запрограммировать пирамиду агрегации, чтобы ее можно было потом разбирать и сверху и снизу и вставляя слои и убирая лишние.