Advies class design voor applicatie
Ik ben een applicatie aan het ontwikkelen.
Het programma is volledig in OOP en maakt ook gebruik van Java. (niet te verwarren met javascript).
De applicatie heeft een server nodig, niet alleen om er op te draaien. De applicatie maakt verbinding met andere apparaten om als een soort chat gegevens uit te wisselen.
Het programma is ook los te gebruiken zonder in verbinding te staan met het internet/andere apparaten.
Ik heb een soort algemene laag in het class design, waar ik alle gegevens uit haal. Bij het opstarten moet bijvoorbeeld ergens de gebruikersnaam vandaan worden gehaald.
Om duidelijker uit te leggen waar ik advies bij kan gebruiken, het volgende voorbeeld.
Stel je bijvoorbeeld een game voor op je PC, die je als multiplayer en singleplayer kunt spelen.
Je kiest in het hoofdmenu voor "Multiplayer" zodat het programma weet dat je met iets een verbinding gaat maken, en je kiest "Singleplayer" als er geen internet (nodig) is, en als je dus alleen op de PC zelf de informatie hebt die moet worden geladen om in een level verder te gaan waar je was gebleven.
Ik heb in mijn applicatie één "datalaag" die ik "Server" noem, de naam "Server" slaat op de verbinding met een server, dus vergelijkbaar met "Multiplayer" van een spel.
Maar als mijn programma wordt gebruikt zonder server, dan wordt nog steeds deze datalaag gebruikt, die dus Server heet. Het lijkt dus alsof ik altijd alles met een server ertussen doe, ook als het programma offline wordt gebruikt.
Hoe kan ik dit beter organiseren?
Als ik bij het opstarten vraag of de gebruiker "Online" (met server) of "Offline" wil werken, dan zou ik bijna twee aparte programma's krijgen, met beide andere class namen voor alle datalagen.
Zal ik een aparte laag maken die ik bijvoorbeeld "DataService" noem en dat daarin een Server object zit als er online wordt gewerkt, en een ander object (dat dus voor de gegevens op de computer zelf zorgt) als er offline wordt gewerkt? (Een soort dependency injection?)
Gewijzigd op 07/12/2014 22:37:58 door Jan terhuijzen
Bij berichtenverkeer met een server heb je een vergelijkbare situatie. Het maakt bijvoorbeeld technisch niet veel uit of je offline bent of dat je online bent maar er geen nieuwe berichten zijn. Daarvoor heb je echt niet twee verschillende applicaties nodig. Je vervangt bij het offline gaan bijvoorbeeld je MessagingService door een NullMessagingService. Die gedraagt zich hetzelfde als de reguliere connector met de server, maar meldt gewoon lokaal dat er geen berichten zijn.
Een voorbeeldje:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
if ($environment->isConnected) {
$server = $this->getServer();
$settings = $server->getSettings();
} else {
$settings = parse_ini_file('my_local_settings.ini');
}
?>
if ($environment->isConnected) {
$server = $this->getServer();
$settings = $server->getSettings();
} else {
$settings = parse_ini_file('my_local_settings.ini');
}
?>
Gewijzigd op 08/12/2014 08:28:50 door Ozzie PHP