2014-05-13 9 views

Odpowiedz

22

Od http://alistair.cockburn.us/Hexagonal+architecture i https://github.com/jschairb/sandbox/wiki/HexagonalArchitecture

sześciokątne architektura jest architektura zdefiniowane poprzez ustanowienie obwód wokół dziedzinie aplikacji i utworzenia adaptery do interakcji wejścia/wyjścia. Po utworzeniu tej warstwy izolacji aplikacja staje się nieświadoma natury rzeczy, z którymi wchodzi w interakcję.

Tworzenie aplikacji do pracy bez żadnych UI lub bazy danych tak można uruchomić zautomatyzowane testy regresji w stosunku do aplikacji, praca gdy baza danych staje się niedostępny, a aplikacje łączyć bez udziału użytkownika. - Alistair Cockburn

+6

Huh. Pomyślałem, że to ma coś wspólnego z sześciokątami. Pokazuje, że [nazywanie rzeczy jest najtrudniejszą częścią programowania] (http://martinfowler.com/bliki/TwoHardThings.html), jak sądzę. –

+1

@PatrickM Kiedy narysujesz wzór na papierze lub użyjesz jakiejś reprezentacji modelowania, wygląda jak sześciokąt. Chodzi o to, że wiedza o tym, o czym mówisz przed komentowaniem, jest najtrudniejszą częścią StackOverflow – Sebastien

+3

Diagramy na połączonych stronach rzeczywiście mają 6 stron, ale nie ma powodu, aby miały 6 stron poza tym, że zostały narysowane w ten sposób. Dokumenty mówią o ustanawianiu portów i interfejsów, a diagramy pokazują każdy port/interfejs zajmujący powierzchnię otaczającego wielokąta. Jednak najbardziej zaangażowany diagram pokazuje tylko cztery używane ściany. Mógł zostać nazwany "architekturą pentagonalną" lub "architekturą heptagonalną", a jedyną obserwowaną zmianą byłoby więcej osób pytających, dlaczego ta liczba jest ważna. –

9

Czy masz na myśli sześciokątny wzór wzoru?

zamiarem sześciokątna wzorca projektowego

Pozwala aplikacji na równi być napędzany przez użytkowników, programów testowych lub automatycznych skryptów wsadowych, a które mają zostać opracowane i przetestowane w oderwaniu od jego ewentualnych urządzeń run-time i baz danych.

Gdy zdarzenia przychodzą ze świata zewnętrznego w porcie, adapter specyficzny dla danej technologii przekształca go w użyteczne wywołanie procedury lub komunikat i przekazuje go do aplikacji. Aplikacja jest błogo nieświadoma natury urządzenia wejściowego. Kiedy aplikacja ma coś do wysłania, wysyła ją przez port do adaptera, który tworzy odpowiednie sygnały potrzebne technologii odbierającej (ludzkiej lub automatycznej). Aplikacja ma semantycznie dobrą interakcję z adapterami po wszystkich jej stronach, bez znajomości natury rzeczy po drugiej stronie adapterów.

Read more about it at here

2

Jest to bardziej całościowego projektu systemu. Zasadniczo chcesz, aby twój kod był równie przyjazny dla wszystkich chętnych.

W celu wsparcia tego, na przykład, usługi sieciowe są zgodne ze standardami i ogólnie, ogólnie, obsługują JSON. Czemu? WebClients dostępne są w różnych formach, więc przestrzeganie standardów pozwala klientom na łatwą integrację. JSON posuwa się o krok dalej: sprawia, że ​​upuszczenie interfejsu użytkownika staje się bezbolesne.

Z perspektywy technologicznej nie można całkowicie zbudować usługi przyszłościowej. Tylko upewnij się, że cel usługi jest jasny/czysty i zgodny z celem. Jeśli ten cel nie jest już pakietem, potrzebujesz (a) nowych usług:

Łatwiej to powiedzieć niż zrobić. Kiedy zaczynasz się opierać szefowi, aby złamać te zasady, ze względu na cel, robisz to, co musisz, aby go odepchnąć. Ale włamanie jest skończone i generalnie wynikiem jest to, że usługa przyjmuje niezwiązaną logikę, że trwale kończy się posiadanie.

Jeśli możesz wprowadzić jedną zasadę do swojego projektu systemu, to jest to: Otwarty na przedłużenie. Zamknięte dla modyfikacji

3

Z mojego rozumowania jest to trochę szumu dla ogólnej praktyki inżynierii oprogramowania separacji. Zasadniczo stwierdza, że ​​twoja logika i/o powinna być ukryta przed logiką domeny. Więc podstawowa logika biznesowa może być dostosowana do różnych "użytkowników". Jest bardzo blisko związany ze wzorem MVC.

Myślę, że nazwa "Architektura heksagonalna" została właśnie uzupełniona przez prezentera. A niektórzy ludzie to podnoszą.

+2

Każdy wzorzec lub wytyczna do projektowania oprogramowania lub coś innego jest pewną formą "ogólnej praktyki inżynieryjnej w zakresie rozdzielania spraw" :-) –

-3

ośmiokątny kształt

for (int i = 1; i <= 17; i++) { 
     for (int j = 1; j <= 17; j++) { 
      if (i == 1) { 
       if (j > 6 && j < 12) 
        mtextView.append("* "); 
       else 
        mtextView.append(" "); 
      } else if (i > 1 && i < 7) { 
       if (j == 9 - (i + 1) || j == 9 + (i + 1)) 
        mtextView.append("*"); 
       else 
        mtextView.append(" "); 
      } else if (i >= 7 && i <= 11) { 
       if (j == 1 || j == 17) 
        mtextView.append("*"); 
       else 
        mtextView.append(" "); 
      } else if (i >= 12 && i <= 16) { 
       if (j == i - 10 || j == 18 - (i - 10)) 
        mtextView.append("*"); 
       else 
        mtextView.append(" "); 

      } else if (i == 17) { 
       if (j > 6 && j < 12) 
        mtextView.append("* "); 
       else 
        mtextView.append(" "); 
      } 
     } 
     mtextView.append(Html.fromHtml("<br>")); 
    } 

} 

}

+1

Jesteś prawdziwym bohaterem! –

Powiązane problemy