Мнение архитектуры кода - PullRequest
0 голосов
/ 11 марта 2011

Зал,

Мне нужно ваше мнение о том, что лучше в следующем случае.

У меня есть иерархический двухуровневый класс событий с веб-сайта (A и B - базовый класс)это кодируется в dll фреймворка (назовем его «TheLib.dll») для разложения и повторного использования:

A

  • Сын 1
  • Aсын 2
  • ...

B

  • B сын 1
  • B сын 2
  • ...

Затем мне нужны некоторые внешние инструменты (приложение console / wpf), которые будут отображать содержимое каждого из этих событий каждый раз с некоторыми различными (частью свойств) и определенным форматированием для журнала, например.,Но я получаю событие с их базовым типом: A или B, а не с собственным конечным типом.

Первый подход заключается в кодировании этого в «TheLibe.dll», объявлении интерфейса с определенным методом toStringxxx и назначении его.к каждому событию сын * и сын Б. *

Я не фанат этого, так как код должен быть в консольном приложении, а не в фреймворке, потому что он не будет использоваться ни в каком другом внешнем инструменте.

Итак, я закодировал форматирование строки непосредственно в консольное приложение, используя общее приведение из вызова GetType ()

Дайте мне знать, хорошо это или плохо и почему?

Sinn '

1 Ответ

0 голосов
/ 11 марта 2011

Если ваше консольное приложение может знать об A и B и всех подтипах, производных от них, нет ничего особенного в том, чтобы использовать что-то вроде GetType() и выполнять форматирование вашего приложения непосредственно в консольном приложении.Просто поймите, что этот подход не очень масштабируем.

Если, тем не менее, A и B могут постоянно расширяться, и ваше консольное приложение никогда не сможет узнать обо всех возможных подтипах, не перестраивая его, вам лучше предоставить либоинтерфейс toString(), так что каждый класс может выполнять свое собственное форматирование, или интерфейс print(), который позволяет передавать какой-либо поток вывода, чтобы можно было форматировать вывод в зависимости от типа передаваемого потока (например, производный класс ostream вC ++, java.io.OutputStream производный класс на Java, ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...