Wzorce projektowe
pamiątka
[wzorzec projektowy] Umożliwia zapamiętanie stanu obiektu oraz późniejsze jego odtworzenie.Budowa wzorca projektowego
struct RStanObiektu
{
};
class CPamiatkaObiektu
{
private:
RStanObiektu m_zapamietanyStan;
public:
CPamiatkaObiektu( const RStanObiektu & stan )
: m_zapamietanyStan( stan )
{
}
const RStanObiektu & odczytajStan() const
{
return m_zapamietanyStan;
}
};
class CObiektProgramu
{
private:
RStanObiektu m_stanObiektu;
public:
CPamiatkaObiektu * zapiszStan() const
{
return new CPamiatkaObiektu( m_stanObiektu );
}
void wczytajStan( const CPamiatkaObiektu & pamiatka )
{
m_stanObiektu = pamiatka.odczytajStan();
}
};
class CZarzadzajPamiatkamiObiektu
{
std::vector < CPamiatkaObiektu *> m_vPamiatki;
};
Opis szczegółowy
Pamiątka
(ang. Memento) - wzorzec projektowy, który umożliwia zapamiętanie stanu obiektu oraz późniejsze jego odtworzenie.
Zastosowania wzorca pamiątka
Wzorzec pamiątki stosujemy gdy:
Pozostałe informacje
Wzorzec projektowy pamiątki w pierwotnej formie jest bardzo niewygodny w użyciu. Zazwyczaj wzorzec pamiątki implementuje się w postaci szablonu, pozbywając się jednocześnie potrzeby tworzenia struktury do przechowywania informacji. Szkielet implementacji opartej o szablony może więc wyglądać tak:
template < class KlasaT >
class TPamiatka
{
KlasaT m_stan;
public:
TPamiatka( const KlasaT & stan )
: m_stan( stan )
{
}
const KlasaT & odczytajStan() const
{
return m_stan;
}
};
class CObiektProgramu
{
private:
int m_zmienna;
public:
TPamiatka < CObiektProgramu >* zapiszStan() const
{
return new TPamiatka < CObiektProgramu >( * this );
}
void wczytajStan( const TPamiatka < CObiektProgramu >& pamiatka )
{
const CObiektProgramu & stan = pamiatka.odczytajStan();
m_zmienna = stan.m_zmienna;
}
};
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści poza niniejszym serwisem
jest zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechniania własnego tekstu wedle własnego uznania.