假設我有下面的類層次結構:很好的方式
class abstract Parent{}
class FirstChild extends Parent {}
class SecondChild extends Parent {}
而且我想創建DTO從每個子對象:
class abstract ParentDTO {}
class FirstChildDTO extends ParentDTO{}
class SecondChildDTO extends ParentDTO{}
我想我需要一個工廠方法是這樣的:
ParentDTO createFrom(Parent source);
是否有任何不錯方法來做到這一點在Java中沒有instanceof
檢查和if/else語句?
編輯: 此工廠方法不起作用:
public ParentDTO create(Parent source)
{
return _create(source);
}
private FirstChildDTO _create(FirstChild source)
{
return new FirstDTO();
}
private SecondChildDTO _create(SecondChild source)
{
return new SecondDTO();
}
private ParentDTO _create(Parent source)
{
return new ParentDTO();
}
它只產生ParentDTO
S和這是爲什麼:
Parent p = new FirstChild();
System.out.println(factory.create(p)); //ParentDTO
FirstChild f = new FirstChild();
System.out.println(factory.create(f)); //FirstChildDTO
在Java中,[在繼承青睞組成](HTTPS://書籍.google.be/books?id = ka2VUBqHiWkC&pg = PA81)。它會產生你不想要/不需要的問題和頭痛。 –
@OlivierGrégoire謝謝,我牢記這一點。 – mtyurt