2017-06-25 15 views
5

Buduję aplikację na Androida z czystą architekturą , używając wzorca MVP i wzorca repozytorium w warstwie danych. Jestem trochę zdezorientowany obiektami biznesowymi. Czy powinien istnieć obiekt do użycia w prezentacji i inny typ tego samego obiektu w domenie/warstwach danych? Jeśli tak, to gdzie i kiedy przekonwertować obiekt na inny typ?Struktura warstwowa z Androidem czystym Architektura

Odpowiedz

3

Choć jest to technicznie możliwe, zwykle nie ma potrzeby posiadania specjalnej reprezentacji jednostek domen dla warstwy prezentacji.

Czasami możesz znaleźć się w pozycji, gdy warstwa prezentacji wymaga powiązania ze sobą kilku podmiotów (np. Wyświetl informacje o dwóch użytkownikach biorących udział w czacie). W takich przypadkach można zdefiniować opakowanie, które połączy ze sobą wymagane elementy.

Jednak z mojego doświadczenia wynika, że ​​takie łączenie jest rzadko wymagane i ma pewną cenę: warstwa prezentacji "czeka" na wszystkie powiązane dane, nawet jeśli części tych danych mogły już zostać pokazane użytkownikowi (np. Informacje o jednym użytkownik może zostać natychmiast pokazany, ale informacje o innym użytkowniku są pobierane z serwera). Zmniejsza to postrzeganą responsywność aplikacji.

Ogólnie rzecz biorąc, w przypadku aplikacji klienckiej schemat obiektów domenowych zwykle pochodzi ze specyfikacji interfejsu użytkownika. Dlatego też, jeśli znajdziesz się pod uwagę osobną reprezentację obiektów domeny dla warstwy prezentacji, to jest bardzo prawdopodobne, że jeden z poniższych zagadnień projektowych już obecnych w aplikacji:

  1. obiektów domeny wykorzystywane w aplikacji są takie same jak te, wykorzystywane do wymiany danych z serwerem
  2. wymagania Applicaiton ewoluowały, ale obiekty domeny nie zmieni odpowiednio

zawsze chcesz warstwa sieci mają być oddzielone od pozostałej części aplikacji. Obejmuje to schematy używane w wymianie danych z serwerem. Jeśli twoje obiekty domenowe spełniają ograniczenia nałożone przez interfejs API serwera, ale nie spełniają wymagań warstwy prezentacji, wówczas najlepiej będzie wprowadzić logikę "tłumaczenia" między warstwą sieci a resztą aplikacji.

Jeśli wymagania aplikacji ewoluowały, ale obiekty domeny nie były odpowiednio aktualizowane, zamiast oddzielnej reprezentacji dla warstwy prezentacji najlepiej jest przejrzeć projekt i zaktualizować całą aplikację zgodnie z aktualnymi wymaganiami.