Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS][OOP]Obiekt czy funkcja.
Forum PHP.pl > Forum > PHP > Object-oriented programming
daniel1302
Witam, projektuję aplikację obiektową niby w JS ale też OOP. Teraz mam dylemat:
Mam klasę sterującą aplikacją- Application();
oraz klasę zajmującą się sterowaniem w tej aplikacji(obsługa myszy, klawiatury itp)- AppControl();. Klasa AppControl przechowuje informacje o zachowaniach na daną reakcję(naciśnięcie klawisza):
  1. app.appControl.addKeyEvent('escape', nacisnijEscape(), puscEscape());

Dane przechowywane są w tablicy

I teraz mam to rozwiązane tak:
Klasa Application posiada instancje obiektu AppControl();, i wygląda tak:
  1. function Application()
  2. {
  3. var appControl = new AppControl();
  4. .
  5. .
  6. .
  7. }

i teraz operacje wyglądają nastepująco:
  1. var app = new Application ();
  2. app.appControl.addKeyEvent('left', przesunWLewo());



Tylko zastanawiam sie czy funkcje obiektu appControl nie powinny być funkcjami obiektu Application?
Bo w sumie nie wiem czy jest sens tworzyć nowy obiekt tylko w jednym miejscu(bo raczej sterowanie nie będzie dublowane).
Jest jeden mały problem. Bo nie pausje mi ładowac wszystkiego do jednego pliku(bo klasa Application nie zajmuje wiele(6kB), ale klasa sterowania narazie zajmuje 12 kB a będzie rozbudowywana.
Czy jest jakiś inny sposób na umieszczenie funkcji dla klasy w nowym pliku poprzez rozbudowywanie prototypowe?
np:
  1. Application.prototype.addKeyEvent = function (){...}


Co wy myślicie na ten teamat. jak powinno być zrealizowane taki problem.

Nie jestem pewiem, bo JS jest językiem dynamicznym a ja pracowałem zawsze na PHP, C, Asm. I w PHP nie wachałbym się tylko stworzyłbym nową klasę, ale tutaj nie wiem
HgReed
Ja na Twoim miejscu, zrobiłbym to tak:
1. klasa Application lub AppControl (nie wiem, czy ta druga ma wiele instancji - jeśli nie, może być ona) powinna mieć jakiś mapper typu:
Kod
var controls = {
    'mouse': {
        'event1': funckja,
        'event2': funckja
    }
};

W końcu myszka czy klawiatura nie wyśle 100 sygnałów na raz, więc za każdym z nich, jedziesz po `controls` i jeżeli pasuje - wywołujesz funkcje.

2. Tak - to powinny być funkcje klasy Application lub AppControl (jak wyżej), ale też jakoś pogrupowane (np. `mouse: [f1, f2, f3]')
Crozin
Cytat
Bo w sumie nie wiem czy jest sens tworzyć nowy obiekt tylko w jednym miejscu(bo raczej sterowanie nie będzie dublowane).
Jeżeli zadanie tego obiektu jest inne od zadania innego obiektu (tutaj ma to miejsce) to jest to wręcz wymagane.
Cytat
Bo nie pausje mi ładowac wszystkiego do jednego pliku(bo klasa Application nie zajmuje wiele(6kB), ale klasa sterowania narazie zajmuje 12 kB a będzie rozbudowywana.
Czy jest jakiś inny sposób na umieszczenie funkcji dla klasy w nowym pliku poprzez rozbudowywanie prototypowe?
Rzuć sobie okiem na architekturę projektów typu jQuery czy Twitter Bootstrap, a dokładniej na narzędzia do budowania aplikacji (skryptów) w JavaScriptcie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.