Не могли бы вы предложить лучший дизайн? - PullRequest
1 голос
/ 20 декабря 2010

Ниже приведен сценарий.

У меня есть то, что называется Domain, в котором может быть несколько States (пара значений Statekey-Statevalue). Один и тот же StateKey может присутствовать в нескольких доменах, но с другим StateValue.

например, StateKey с именем «EconomicCapital» может присутствовать в доменах, таких как «Англия», «Америка» со значениями «Лондон», 'Washington' соответственно.

Соответствующие им классы находятся в общей библиотеке, которую можно использовать на стороне клиента или службы по мере необходимости.

У меня есть приложение winform, в котором я могу выбрать определенныйдомен.В любой строке, где бы я ни встречался с каким-либо StateKey, я хочу заменить его на StateValue для выбранного домена.

Я могу придумать следующие варианты:

  1. Установить композиционные отношения.Домен может состоять из Штатов.Поэтому, когда мне нужно StateValue любого StateKey, я могу получить объект требуемого домена и извлечь из него составленный StateKey из коллекции States.

Но может быть большое количество случаев, когда StateKeyбудет использоваться, я не думаю, что этот подход является довольно хорошим, поскольку он требует поиска объекта Domain из коллекции доменов и повторения его коллекции State для поиска конкретного ключа.

ИЛИ

  1. Поддерживать статическую коллекцию, которая может содержать все StateKeys в другом домене.Когда я хочу конкретный StateKey, я могу просто искать в этой коллекции.

Не могли бы вы дать мне совет, какой подход более уместен?Будет ли какой-то другой подход / дизайн?

(Если логика реализована на стороне службы; не только одно приложение winform, но многие такие приложения могут получить к нему доступ.)

Ответы [ 2 ]

3 голосов
/ 20 декабря 2010

Как насчет

Dictionary<domain, Dictionary<statekey, statevalue>()

Затем можно найти пары ключ-значение из домена и получить значение из этого .... Или я что-то упустил в вашем вопросе?

0 голосов
/ 20 декабря 2010

Это просто «мысленный проект» / домашнее задание? Отношения Domain> State> StateValue должны делать , чтобы стать классом и использовать шаблоны проектирования. Похоже, это просто набор операций поиска. Возможно, вам лучше использовать LINQ или базу данных.

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