title image


Smiley Re: Konzeptfrage - Kommunikation über verschiedene Schnittstellen
Wie sehr unterscheiden sich denn die Modi? Vielleicht würde das Strategy-Pattern ausreichen.



class Interface {};

class RS232 : public Interface {

RS232(const char* port);

};



class Device {};

class Device1 : public Device

{

Device1(Interface&);

void ChangeMode(std::auto_ptr);

void Send_Cmdx(){currentMode->Send_Cmdx(*this);}

}



class Device1Mode {

virtual void Send_Cmdx(Device1&)=0;

};

class Device1ModeA : public Device1Mode {

virtual void Send_Cmdx(Device1&){} // statt Send_ModeACmdx

};



Oder müssen alle Geräte diese Modi haben? Dann könnte die Modusauswahl eine Ebene tiefer liegen:



class Device {

enum {ModeA, ModeB} ModeType;

virtual void ChangeMode(ModeType) = 0;

virtual void Send_Cmdx() = 0;

};

class DeviceMode {

virtual void Send_Cmdx(Device&)=0;

};



class Device1 : public Device

{

Device1(Interface&);

void ChangeMode(ModeType m) {

// Factory

switch(m){

case ModeA: currentMode = new Device1ModeA();

...



void Send_Cmdx(){currentMode->Send_Cmdx(*this);}

}



class Device1ModeA : public DeviceMode {

virtual void Send_Cmdx(Device&){} // statt Send_ModeACmdx

};


Dieser Beitrag ist gratis und vom Umtausch ausgeschlossen.

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: