Каков предпочтительный метод двух ниже, когда речь идет о преобразовании объектов?Шаблоны проектирования и соглашения для преобразования объектов
преобразованияобъекта с использованием метода ASX()
public class Foo {
int foo;
public Bar asBar() {
return new Bar(foo);
}
}
class Bar {
int bar;
public Bar(int bar) {
this.bar = bar;
}
}
преобразования объекта с помощью конструктора
public class Foo {
int foo;
}
class Bar {
int bar;
public Bar(int bar) {
this.bar = bar;
}
public Bar(Foo foo) {
this.bar = foo.foo;
}
}
я не уверен в достоинствах любого метода (в отношении ремонтопригодности, масштабируемости и др .c), по сравнению с другим. Каков установленный стандарт?
Я согласился с тем, что вопрос достаточно широк, как указал Пол Боддингтон в комментариях, но надеюсь на полезное обсуждение до того, как этот вопрос будет закрыт.
Вы должны возложить ответственность за преобразование в другой объект. Что делать, если вы хотите конвертировать 'Foo' в другой тип, отличный от' Bar'? В конечном итоге вы получаете множество методов преобразования в своем классе. Не только это, это нарушит принцип O/C, если позже вы решите добавить другие методы преобразования. –
В дополнение к 3 подходам, предложенным до сих пор, вы также можете использовать метод 'static' для преобразования. Я думаю, что этот вопрос очень широк, и нет правильного ответа. –
@VinceEmigh Не помешал бы это пространство имен, введя класс, который используется исключительно для преобразования между объектами. Я имею в виду для меня использовать такие методы преобразования в любом из классов, которые преобразуются в/из. – SamTebbs33