 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Martin Bauer Guest
|
Posted: Thu Oct 21, 2004 11:31 am Post subject: Anf344ngerfrage ( Des... ^ |
|
|
hallo,
Eine Klasse Server hat einen Thread in dem auf eingehende Anforderungen
gewartet wird. Diese hat eine Liste, in der N ClientObjekte
verwaltet werden. Server stellt auch eine Methode ( zur Zeit statisch )
"Login" bereit, welche von den Clientobjekten genutzt wird.
Der Login und alles andere wird im ClientObjekt auch in einem Thread
durchgeführt. Soweit funktioniert das.
Jetzt kann es aber sein, und das muß vermieden werden, daß sich 2 Clients
gleichzeitig mit gleichem Logindaten anmelden.
Die Klasse Server bekommt noch eine Liste der aktuell angemeldeten Benutzer
hinzu. Auf diese Liste muß beim Login zugeriffen werden.
Also "Login" kann nicht mehr statisch sein. Nun könnte der Klasse Client
einen Zeiger CServer* hinzugefügt werden, welcher bei der Erstellung
von Client mit this von CServer initalisiert wird.
Ansatt CServer::Login( ... ) würde dann pServer->Login( ... ) geschrieben
werden.
Mir kommt das aber so vor, wenn ich mit 2 Klassen schon solche wirren
erlebe, wie sieht der "Kneul" aus, wenn es 10 oder mehr werden.
Dann hat wieder jede Klasse nen Zeiger auf ne andere, nur um mit ihr
"kommunizieren" zu können.
Kann mir mal jemand bitte mein eher mäßiges OO-Denken aufhellen ?
Besten Dank im Voraus
MfG
Martin
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Frank Birbacher Guest
|
Posted: Sat Oct 23, 2004 10:51 pm Post subject: Re: Anfängerfrage ( Design ) |
|
|
Hi!
Martin Bauer wrote:
| Quote: | Kann mir mal jemand bitte mein eher mäßiges OO-Denken aufhellen ?
|
Du möchtest wahrscheinlich ein "Singleton" ersetzten. Das heißt,
dass es von deinem Server nur eine einzige Instanz gibt, und dass
jeder darauf zugreift. Etwa so:
class Server
{
//...
public:
static Server& getInstance()
{
static Server server;
return server;
}
private:
Server() { /*...*/ };
Server(const Server&); //nicht implementiert
};
Dieses Vorgehen wird auf zahlreichen Webseiten ausführlich
erklärt. Dabei werden vielleicht noch mehr Dinge angesprochen,
die ich hier vergessen habe.
Frank
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|