У меня есть объект с полями.
В проекте мне нужен этот объект, заполненный информацией.
кто несет ответственность за заполнение этого объекта?
Я бы хотел метод, подобный getFilledObject (), который возвращает полностью заполненный объект в мою программу.
Я могу поместить эту логику в основной поток и заполнить ее «на месте», также я могу добавить этот метод в сам класс, чтобы он знал, как заполнить себя в соответствии с параметрами, которые я передаю.
Последнее решение достаточно хорошее, единственная проблема в том, что класс должен знать о его природе гораздо больше, чем простой простой класс get-set.
Но я чувствую, что ни одно решение не является достаточно хорошим. Что это должно быть? Вспомогательный класс, который содержит только логику для заполнения объекта?
Вы знаете, да, Фабрика - это то, что я искал, но это всегда упоминается вместе с полиморфизмом. В моем случае мне это вообще не нужно. Таким образом, я могу назвать это фабрикой, но действительно ли это будет то, что они назвали «Фабричный образец»?
Так что мы имеем в результате?
во-первых, статический фабричный метод
class A {
ObjType1 obj1;
ObjType2 obj2;
public A() {}
public static getA(int param1, int param2) {
A a = null;
ObjType3 obj3 = null;
if (somelib.complexCheck(param)) {
obj3 = someotherlib.getSomething(param2);
// other stuff
}
if (obj3 != null) {
// do something with getters & setters, fill a
}
return a;
}
и фабричный шаблон или что-то похожее на него
class Fact {
public static A getA(int param1, int param2) {
// do all that stuff here
}
}
разница, на мой взгляд, состоит в большом количестве директив импорта в классе A в случае статического фабричного метода . Кроме того, мы можем поместить аналогичные статические методы в класс Fact, если всем им нужны одинаковые библиотеки.
Что бы вы выбрали между двумя?