Autor Wątek: Architektura playera  (Przeczytany 968 razy)

Offline lukasyno

  • Użytkownik

# Marzec 16, 2013, 18:58:58
Siema, problem ktory opisze jest naciagany i bardzo uproszczony ale zastanawiam sie nad najlpeszym podejsciem architektonicznym.

Wiec tak:
W klasie glownej mam zaimplementowany player muzyki (jak mowilem naciagany przyklad ale analogia zostaja) i jesli chce pauzowac daje player.pause kiedy chce poglosic daje player.volume(n) itp itd, w klasie glownej tez mam zaimplementowana klase NavBar w ktorej znajduje sie kilkanascie przyciskow (pause, resume, volume itp) no i wlasnie jak najlepiej "podczepic" przyciski pod funkcje playera, ja mam w sumie kilka pomysłow..

1)udestepnic interfejs klasy Main i bezposrednio w zdarzeniach klasy NavBar manipulowac playerem czyli..

..klikniecia buttona
{
  Main.getInstance().player.<akcja>
}

generalnie pomysl prosty ale buduje duze zaleznosci nie wiem gdzie i kiedy ktos bedzie manipulował instancja klasy Main..

2) pomysl drugi bardziej w strone MVC czyli, w klasie glownej gdzie mam zaimplementowany NavBar nasluchuje zdarzen ktore plyna z niego, i odpowiednio reaguje, czyli po kliknieciu buttona play, on wysyla zdarzenie do klasy NavBar a ta z koli wysyla zdarzenie do klasy glownej gdzie moglbym

..klasa glowna nasluchiwanie zdarzenia
{
  if (eventtype == "PLAY")
player.play();
else if ....
}

pomysl 2 tez jest stosunkowo prosty do implementacji ale daje wiekszy narzut w rodzaju wysylania powiadomienia, w klasie glownej sprawdzam co za tym zdarzenia dostalem i odpowiednio reaguje, ma ktos jakis inny pomysl na zgarne podpiecie playera i buttonow? najlepiej z praktycznym opisem pod dany problem po o frameorkach architektonicznych duzo czytalem i czasem ciezko je dostosowac do danego problemu..


Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Xion

  • Redaktor
    • xion.log

# Marzec 16, 2013, 19:05:10
A czemu nie zwykłe zdarzenia?

class Main {
private:
    NavBar* navBar;
    Player* player;

public:
      void Init() {
            navBar.setPlayAction([] { player.play(); });
            navBar.setPauseAction([] { player.resume(); });
            // itd.
      }
};

Offline lukasyno

  • Użytkownik

# Marzec 16, 2013, 19:38:01
A czemu nie zwykłe zdarzenia?

class Main {
private:
    NavBar* navBar;
    Player* player;

public:
      void Init() {
            navBar.setPlayAction([] { player.play(); });
            navBar.setPauseAction([] { player.resume(); });
            // itd.
      }
};

to szczerze wole juz do navBara przekazac referencje do playera i w navbarze bezposrednio na nim operowac i chyba tak zrobie:) ach to projektowanie kodu czasem wiecej miesza w bani niz jakies algorytmy ;)