C++ state pattern και κλάσεις χωρίς data members

V13 v13 at v13.gr
Wed Dec 5 23:19:41 EET 2012


On Wednesday 05 December 2012, Theodore Lytras wrote:
> Έχω λοιπόν μια κλάση Foo, η οποία κρατά έναν private pointer σε ένα
> αντικείμενο της abstract base class με όνομα State, η οποία έχει έναν
> αριθμό από concrete classes StateA, StateB, etc. Έστω επίσης οτι οι
> αλλαγές καταστάσεων γίνονται από την κλάση Foo. Κάπως έτσι δηλαδή:
> 
> class State {	// ABSTRACT!!
> }
> 
> class StateA : public State {
> }
> 
> class StateB : public State {
> }
> 
> class Foo {
>    public:
>       void setState(State* newState);
>    private:
>       State* m_state;
> }
[snip]
> Η πρώτη ερώτηση λοιπόν είναι: κερδίζω τίποτα αν επιβάλλω στις θυγατρικές
> κλάσεις της State να έχουν μόνο ένα instance (δηλαδή... singleton
> pattern?). Είναι καλό αυτό? Πως σας φαίνεται?

Diladi os xrisi skopeveis na kaneis kati san to:

foo=new Foo();
stateA1=new stateA();
stateA2=new stateA();
stateB1=new stateB();
foo->setState(stateA1);
foo->setState(stateA2);
foo->setState(B);

?

An nai, diladi an skopeveis na exeis stateA1 kai stateA2 shmainei pos kapoia 
diafora tha exoyn ayta ta dyo, esto kai an h diafora toys einai o pointer 
toys.

Genika, ta pragmata edo einai arketa monodromos otan analogisteis th xrisi. An 
theleis na exeis polla exe polla. An thes na exeis apo ena, exe apo ena. An 
theleis na kaneis initialization se tyxaia meri tote kane singleton 
diaforetika min kaneis kan new.


More information about the Linux-greek-users mailing list