![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
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):
Dane przechowywane są w tablicy I teraz mam to rozwiązane tak: Klasa Application posiada instancje obiektu AppControl();, i wygląda tak:
i teraz operacje wyglądają nastepująco:
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:
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 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 13.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
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]') |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
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. 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.
Czy jest jakiś inny sposób na umieszczenie funkcji dla klasy w nowym pliku poprzez rozbudowywanie prototypowe? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 23:53 |