Ik ben zo'n beetje nu een jaar of twee bezig met programmeren in Java. Allemaal erg leuk. Onlangs ben ik me meer gaan richten op het OOP in Java. Had het idee dat ik dat nog niet goed beheerste/snapte. Heb inmiddels een boek gelezen en een paar kleine OOP projectjes gedaan om er wat handiger in te worden.
Momenteel host ik een chatbox, die ik de afgelopen maanden heb gemaakt in Java. Ik ben nu echter van plan mijn server te herschrijven en je raadt het al: hij moet wat meer OO worden
Ik heb al wel nagedacht en heb al wat zitten coden, maar ik vraag me af of dit wel de goede weg is (ja er zijn meer wegen naar Rome, maar heb het idee dat het toch niet goed zit).
De huidige situatie ("zonder" OOP):
De Server luistert naar inkomende sockets en geeft deze door aan de ClientHandler (class die alle clients beheerd e.d.). De ClientHandler maakt een nieuwe instantie van een Client. Deze Client doet veel...teveel. Hij heeft 1 thread, leest en schrijft data en werkt alle chatcommando's af...een regel of 700 code.
De nieuwe situatie (meer OOP gericht):
De Server luistert naar inkomende sockets en geeft deze door aan de ClientHandler (class die alle clients beheerd e.d.). De ClientHandler maakt een nieuwe instantie van een Client. Dit deel is dus hetzelfde gebleven. Maar nu...het leek mij goed om de Client een eigen Reader en een eigen Writer te geven. De afhandeling van chatcommando's moet plaats vinden in een CommandHandler (die ik gedacht had als Singleton, want niet elke Client hoeft een CommandHandler).
Wat er dus gebeurt: de client maakt een referentie aan naar een Reader en een Writer....de Reader leest binnengekomen data en stuurt deze door naar de CommandHandler (samen met een referentie van zichzelf, anders weet de CommandHandler niet van welke Client de data afkomstig is). Als het commando is afgehandeld, gaat het naar de Writer (weer samen met een ref van de Client zelf), waar het verstuurd wordt naar alle clients.
Ligt het nu aan mij of is dit omslachtig? Het lijkt erop dat de data van hot naar her gaat voordat het de deur uit gaat naar de appletclient.
Momenteel host ik een chatbox, die ik de afgelopen maanden heb gemaakt in Java. Ik ben nu echter van plan mijn server te herschrijven en je raadt het al: hij moet wat meer OO worden
De huidige situatie ("zonder" OOP):
De Server luistert naar inkomende sockets en geeft deze door aan de ClientHandler (class die alle clients beheerd e.d.). De ClientHandler maakt een nieuwe instantie van een Client. Deze Client doet veel...teveel. Hij heeft 1 thread, leest en schrijft data en werkt alle chatcommando's af...een regel of 700 code.
De nieuwe situatie (meer OOP gericht):
De Server luistert naar inkomende sockets en geeft deze door aan de ClientHandler (class die alle clients beheerd e.d.). De ClientHandler maakt een nieuwe instantie van een Client. Dit deel is dus hetzelfde gebleven. Maar nu...het leek mij goed om de Client een eigen Reader en een eigen Writer te geven. De afhandeling van chatcommando's moet plaats vinden in een CommandHandler (die ik gedacht had als Singleton, want niet elke Client hoeft een CommandHandler).
Wat er dus gebeurt: de client maakt een referentie aan naar een Reader en een Writer....de Reader leest binnengekomen data en stuurt deze door naar de CommandHandler (samen met een referentie van zichzelf, anders weet de CommandHandler niet van welke Client de data afkomstig is). Als het commando is afgehandeld, gaat het naar de Writer (weer samen met een ref van de Client zelf), waar het verstuurd wordt naar alle clients.
Ligt het nu aan mij of is dit omslachtig? Het lijkt erop dat de data van hot naar her gaat voordat het de deur uit gaat naar de appletclient.