|
пример по принципам архитектуры SOLID
|
|||
---|---|---|---|
#18+
всем привет. в очередной раз столкнулся со стандартной задачей и стало интересно, как ее могут решить другие люди. упрощенное описание такое: имеются сведения об произошедших событиях (все равно каких). каждое событие имеет тип и свой набор атрибутов (тип для упрощения пусть целый). требуется сформировать свое строковое представление для типа события со значением 2 и свое представление для всех остальных типов для выгрузки представления как word документ на клиента на web странице. нужно учесть, что в будущем может потребоваться реализовать свое представление для типов событий 3, 4, 5 и т.п. - из заданного списка. для описания представления предлагаю вот такой интерфейс Код: c# 1. 2. 3. 4. 5.
строковое представление события для типа 2 пусть описывается такой его реализацией Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
строковое представление для всех остальных типов пусть описывается такой реализацией Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
по-моему классы для реализации представления события я сделал вполне приемлемо. поскольку точно сказано, что выводиться в Http контекст, будем жить проще и сделаем такую функцию вывода для любой реализации представлений Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
возникает необходимость иметь универсальный механизм выбора этих представлений в зависимости от типа. вот реализация для обсуждения Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
ну и вызывать отображение представления можно примерно так ( считаем, что имеем корректно созданный http контекст) Код: c# 1. 2. 3. 4. 5. 6. 7.
по-моему, классы для реализации представлений я реализовал правильно, по SOLID. вот смущает реализация выбора экземпляра нужного представления - это я и хотел обсудить. кто какие другие реализации этой задачи может предложить? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2014, 17:09 |
|
пример по принципам архитектуры SOLID
|
|||
---|---|---|---|
#18+
Вроде как получился паттерн стратегия. А вот выбор конкретной стратегии отдается клиенту. Ну разве что передать эту задачу MyEvent, чтоб он для себя выбирал нужную стратегию(представление), но вряд ли вас такой вариант интересует. И тема вроде ближе к разделу программирования) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 11:27 |
|
пример по принципам архитектуры SOLID
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2014, 17:16 |
|
пример по принципам архитектуры SOLID
|
|||
---|---|---|---|
#18+
@k@DElpher, так вопрос то в том как выгод организовать выбор - стратегия или еще как нибудь. в принципе можно еще использовать абстрактную фабрику. а при использовании стратегии нужно еще выбрать какую именно стратегию создать. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2014, 21:58 |
|
пример по принципам архитектуры SOLID
|
|||
---|---|---|---|
#18+
monstrU, а вы не мудрствуйте. Рано или поздно, всё равно приходится выбирать через простой if ....case )))) - выбор в ОСи винды типов событий как раз такой; - можно ещё посмотреть реализацию логировщиков (Log4j) котрые всё многообразие сообщений выводят в строку. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2014, 11:33 |
|
|
start [/forum/topic.php?fid=33&msg=38739098&tid=1547550]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 165ms |
0 / 0 |