Я - шаблон дизайна newb ie, пожалуйста, помогите правильно организовать классы.
У моего объекта есть свойство ' name ', которое должно иметь несколько переводов:
class Entity {
private int id;
private TranslationCollection name;
...
}
' name ' - должен содержать набор переводов:
{
'en': 'english word',
'sp': 'spanish word',
...
}
Поэтому я решил сделать класс ' Translation ':
class Translation {
private string locale;
private string value;
public constructor (locale, value) { ... }
...
}
и класс ' TranslationCollection ':
class TranslationCollection {
private translationArray[];
public constructor() {
this.translationArray = new array()
}
public addTranslation(Translation translation) {
translationArray.push(translation);
}
...
}
и есть требования:
1 locales could be only from 'listOfLocales' which is available only at runtime.
2 Translation collection could not have repeating locales.
3 Unit testable.
Нормально ли вводить ' listOfLocales 'в' Перевод 'конструктор для проверки локали в списке? В этом случае у меня будет три параметра в конструкторе Translation . И я думаю, что это не очень хороший дизайн.
Или у меня должен быть какой-то ' TranslationFactory ' с ' listOfLocales ', вставленный в конструктор, чтобы создать Перевод с правильным языком?
Или, может быть, я нахожусь не на том пути, и есть лучшее решение?
Как организовать проверку того, что TranslationCollection 'не имеет повторяющихся локалей? Должен ли я проверить в методе addTranslation, что нет элементов массива с местоположениями, совпадающими с новым Translation.location программно, что, кажется, не лучшее решение. Это способ организовать не повторяющуюся коллекцию более декларативно?