Potrzebujesz porady na temat projektowania interakcji między różnymi częściami mojej aplikacji

10

Próbuję zaprojektować „główną” klasę bogatej aplikacji komputerowej opartej na platformie NetBeans 7. Ta aplikacja będzie korzystać z usług HTTP i poprzez „system push” przez TCP będzie otrzymywać wiadomości.

  • Jesteśmy 3 programistami i chcemy równolegle opracowywać moduły
  • Aplikacja będzie warstwowa (dane, biznes, prezentacja)
  • Użyjemy modelu prezentacji w celu oddzielenia obszarów odpowiedzialności
  • Niektóre dane granularne (na przykład Osoba fasoli) będą udostępniane przez kilka ekranów (i być może wyświetlane na kilku ekranach jednocześnie)
  • ...

Jesteśmy w stanie opracować poszczególne ekrany, ale nie wiemy dokładnie, jak zorganizować całą aplikację i zdefiniować zawartość każdego modułu.

  1. Czy masz jakieś porady (wzór / najlepsza praktyka / książka / przykładowa aplikacja), aby koordynować / zarządzać interakcjami w obrębie całej aplikacji?
  2. Wszelkie porady dotyczące definiowania zawartości modułów?

Dzięki!


Mały przykład ilustrujący to, co chcę zbudować: Aplikacja do zarządzania użytkownikami Foo

  1. Uruchom aplikację
  2. Po lewej stronie [explorer] mamy listę platform (lista jest przechowywana w pliku lokalnym)
  3. U góry mamy przycisk, aby dodać nową platformę (dostępną również po kliknięciu prawym przyciskiem myszy)
  4. Klikając dwukrotnie platformę, aplikacja wywołuje usługę HTTP w celu pobrania pełnej listy użytkowników. Ta lista jest wyświetlana w [edytorze] (w JTable)
  5. Rozpoczyna się proces w tle: za pośrednictwem połączenia TCP otrzymujemy wiadomości
  6. Możliwe jest dodanie nowego użytkownika za pomocą przycisku na pasku narzędzi

Jeśli aplikacja zostanie uruchomiona na innym komputerze, a użytkownik jest podłączony do tej samej platformy, jej lista użytkowników będzie aktualizowana dynamicznie (dodaj / usuń / status: {offline / online}) (dzięki wiadomościom)

W przyszłości zostanie udostępniony moduł czatu.

Moje pytanie brzmi (innymi słowy): jakaś rada / najlepsza praktyka decydująca o treści każdego modułu? Jeśli PM (model prezentacji) to dobry sposób na oddzielenie widoku / firmy i danych i tworzenie ekranów, jaki jest najlepszy sposób na połączenie kilku ekranów na podstawie PM? Wyobraźmy sobie, że opracowujemy moduł czatu, jak dodać wpis „Dyskusja z ...” do menu kontekstowego dostępnego po kliknięciu prawym przyciskiem myszy na liście użytkowników?

Destroyica
źródło
3
Nie jest jasne, o co pytasz. A może podasz mały przykład ilustrujący twoje pytanie?
Robert Harvey
Świetny post Geertjana Wielenga. Zawiera oświadczenia Toma Wheelera (członek NetBeans Dream Team): java.dzone.com/news/how-to-split-into-modules
Destroyica

Odpowiedzi:

5

Biorąc pod uwagę twoje wymagania, aby rozpocząć od podstawowego przetwarzania, należy wykonać Wzorzec poleceń, a później można użyć Wzorów szablonów do procesorów żądań. I tak dalej. Nic nie nazywa się wzorcem mistrza. Jeśli tak, nie będą nas już potrzebować.

Chodzi o to, aby mieć projekt, który pozwoli ci ewoluować wraz z wymaganiami.

Zacznę od stworzenia interfejsu modułu podstawowego i przekażę go wszystkim oraz niektórym narzędziom wokół niego. Pozwól wszystkim zaimplementować własne moduły oparte na module podstawowym.

Suraj Chandran
źródło
3

Myślę , że patrzysz na dość klasyczny wzór MVC wspierany przez usługi (RESTful, jak zakładam). Kluczem będzie oddzielenie usługi (usług) od interfejsu użytkownika. Nie dlatego, że wprowadzasz alternatywny interfejs użytkownika, ale dlatego, że daje ci jasność co do interfejsu usługi.

Więc kiedy myślisz o getPeopleusłudze, upewnij się, że pomyślisz o tym, w jaki sposób dodatkowy (inny niż Swing) interfejs użytkownika będzie oddziaływać z usługą. Jeśli będziesz o tym pamiętać, znajdziesz dość elastyczne / oddzielone rozwiązanie.

Martijn Verburg
źródło