2012-10-25 18 views
11

Zasadniczo mam wiele obiektów w mojej aplikacji i muszę je przekonwertować na inne obiekty stron trzecich przed wysłaniem żądania. Po otrzymaniu odpowiedzi muszę przekonwertować te obiekty z powrotem do obiektów obsługiwanych przez moją aplikację.Wzorzec do konwersji jednego modelu do innego modelu

Jakiego wzoru mogę użyć do konwersji jednego obiektu modelu na inny w Javie?

+1

http://stackoverflow.com/questions/1236667/object-conversion-pattern –

Odpowiedz

3

albo Adapter lub fasady wzór powinno rozwiązać problem:

adaptera: http://www.youtube.com/watch?v=TriX8OiEhOU

Fasada: http://www.youtube.com/watch?v=WLjvNpP6yeQ

+8

Dlaczego wzór fasady rozwiązałby jego problem? Czy ten wzór nie jest używany do ["zapewnienia uproszczonego interfejsu do większego zbioru kodu"] (http://en.wikipedia.org/wiki/Facade_pattern)? Nie sądzę, że powinieneś umieścić logikę konwersji w elewacji. –

+0

Adapter jest także przesadą i powinien być używany tylko wtedy, gdy potrzebujesz danych zmienionych w modelu podstawowym, aby odzwierciedlić w nowym modelu. Klasa konwerterów pomogłaby również w oddzieleniu obowiązków. – danidacar

7

Nie sądzę, nie ma konkretnego wzoru do tego, ale po prostu potrzebują „konwerter” lub klasy „translator”, które odbywają się w jednym obiekcie i powraca inny:

MyObject convert(ThirdPartyObject obj); 
ThirdPartyObject convert(MyObject obj); 
1

To trochę trudne do określenia kontekstu obiektów, ale spojrzeć na wzór Assembler, chociaż technicznie nie wzorzec projektowania. Klasa Asembler służy do mapowania z jednego obiektu do drugiego, szczególnie gdy jednym obiektem jest DTO (coś w rodzaju obiektu odpowiedzi) na obiekt Domain. Struktura Dozer może pomóc ci w tych żmudnych transformacjach.

1

Adapter i Fasada to wzory strukturalne. Nie masz żadnych wzorów, aby obsłużyć obiekt Transformacja obiektu.

Z przodu kreacyjnego wzoru, Builder to jeden z wzorów, które można wymyślić.

Ogólnie Model Builder służy do budowania obiektu z parametrem obowiązkowym i opcjonalnym. Ale możesz ją dostroić, budując potrzebny obiekt.

Możesz rozwiązać problem również bez wzoru. Możesz użyć Skład obiektu lub Napisz własną metodę przekształcania obiektu.

Wystarczy popatrzeć na powiązanego z pytaniem SE przykład kodu:

How to prune an object of some of its fields in Java?

Powiązane problemy