Advies class design voor applicatie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan terhuijzen

jan terhuijzen

07/12/2014 22:31:48
Quote Anchor link
Hallo,

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
 
PHP hulp

PHP hulp

26/12/2024 23:37:41
 
Ward van der Put
Moderator

Ward van der Put

08/12/2014 07:27:55
Quote Anchor link
We gebruiken daarvoor vaak een null in de betekenis "niets". Naast een Logger, die gewoon logt, heb je bijvoorbeeld een NUllLogger, die in het luchtledige logt.

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.
 
Ozzie PHP

Ozzie PHP

08/12/2014 08:27:06
Quote Anchor link
Je zou ook kunnen werken met een "Environment" (omgeving) object. Werk je lokaal dan krijg je zoiets als Environment->setLocal() en werk je online krijg je zoiets als Environment->setConnected(). Vervolgens kun je op basis daarvan dan weer de juiste settings en objecten inladen en aanroepen.

Een voorbeeldje:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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');
}

?>
Gewijzigd op 08/12/2014 08:28:50 door Ozzie PHP
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.