Programmēšana

Kā izmantot Memento dizaina rakstu C #

Mēs izmantojam dizaina modeļus, lai atrisinātu parastās dizaina problēmas un samazinātu avota koda sarežģītību. Memento noformējuma modelis ir uzvedības noformējuma modelis, ko var izmantot, lai nodrošinātu atsaukšanas vai atcelšanas iespējas lietojumprogrammā vai vienkārši atiestatītu objekta stāvokli, piemēram, ASP.Net tīmekļa lietojumprogrammā. Uzglabājot objekta stāvokli ārējā vietā, ko sauc par Memento, šis modelis ļauj šo stāvokli vēlāk atjaunot objektā. Izpētīsim, kā mēs varam izmantot Memento dizaina modeli C #.

Katram objektam ir savs iekšējais stāvoklis. Piemiņa dod mums iespēju glābt šo stāvokli un atjaunot to, vienlaikus ievērojot iekapsulēšanas principus, kas nosaka, ka klases instances nevalstniekiem nevajadzētu būt pieejamiem ārpasaulei. Tas ir tāpēc, ka Memento ir pieejams tikai objektam, kura stāvokli tas ir saglabājis.

Memento dizaina modeļa dalībnieku vidū ir Memento, Originator un Caretaker. Kamēr Memento klase saglabā objekta stāvokli, iniciators izveido Memento un vajadzības gadījumā to izmanto stāvokļa atjaunošanai. Apsaimniekotājs ir atbildīgs tikai par Memento glabāšanu - tam nevajadzētu mainīt Memento instanci.

Memento modeļa ieviešana

Šajā sadaļā mēs ieviesīsim Memento dizaina modeli C #. Mēs izveidosim vienkāršu programmu, kurā ir trīs klases - a Kalkulators klase, a Piemiņa klase, un klients, t.i. Galvenais metodi.

Skatiet Kalkulators klase, kas norādīta zemāk.

  publiskās klases kalkulators

    {

int rezultāts;

publiskais kalkulators (int i = 0)

        {

rezultāts = 0;

        }

public void SetResult (int i = 0)

        {

šis.rezultāts = 0;

        }

public void Pievienot (int x)

        {

rezultāts + = x;

        }

public void Atņemt (int x)

        {

rezultāts - = x;

        }

public int GetResult ()

        {

atgriešanās rezultāts;

        }

publiskais Memento CreateMemento ()

        {

Memento memento = jauns Memento ();

piemiņa.SetState (rezultāts);

atgriešanās piemiņa;

        }

public void SaveState (Memento memento)

        {

rezultāts = piemiņa.GetState ();

        }

    }

Ievērojiet CreateMemento un SetMemento metodes Kalkulators klasē. Kamēr pirmais rada a Momento Piemēram, pēdējais izgūst saglabāto stāvokli un piešķir vērtību atpakaļ mainīgajam.

Memento klase

The Piemiņa klase satur divas metodes, SetState un GetState. Kamēr pirmo izmanto stāvokļa informācijas glabāšanai, otro izmanto saglabātā stāvokļa izgūšanai.

sabiedrības klase Memento

    {

int stāvoklis;

publiskais int GetState ()

        {

atgriešanās stāvoklis;

        }

public void SetState (int stāvoklis)

        {

šī.valsts = valsts;

        }

    }

Šajā piemērā klients ir Galvenais metode, kas izveido Kalkulators klase un zvana uz Pievienot un Atņemt metodes skaitļošanas veikšanai. Papildus, Galvenais saglabā valsts informāciju noteiktā kontrolpunktā, piezvanot uz SaveState metodi. Vēlāk šis saglabāts stāvoklis tiek atjaunots, un konsoles logā tiek parādīta rezultāta mainīgā vērtība. Tas ir parādīts tālāk sniegtajā koda fragmentā.

  static void Main (virkne [] args)

        {

Kalkulatora kalkulators = jauns Kalkulators ();

kalkulators.Pievienot (5);

kalkulators.Pievienot (10);

kalkulators.Atņemt (10);

Memento pārbaude = kalkulators.CreateMemento ();

kalkulators.Pievienot (100);

Console.WriteLine (“Rezultāta mainīgā vērtība ir:“ + calculator.GetResult ());

kalkulators.SaveState (checkPoint);

Console.WriteLine (“Rezultāta mainīgā vērtība pirmajā kontrolpunktā ir:“ + calculator.GetResult ());

Konsole. Lasīt ();

        }

Pilns Memento modeļa piemērs

Šeit ir norādīta visa programma.

klases programma

    {

static void Main (virkne [] args)

        {

Kalkulatora kalkulators = jauns Kalkulators ();

kalkulators.Pievienot (5);

kalkulators.Pievienot (10);

kalkulators.Atņemt (10);

Memento pārbaude = kalkulators.CreateMemento ();

kalkulators.Pievienot (100);

Console.WriteLine (“Rezultāta mainīgā vērtība ir:“ + calculator.GetResult ());

kalkulators.SaveState (checkPoint);

Console.WriteLine (“Rezultāta mainīgā vērtība pirmajā kontrolpunktā ir:“ + calculator.GetResult ());

Konsole. Lasīt ();

        }

    }

publiskās klases kalkulators

    {

int rezultāts;

publiskais kalkulators (int i = 0)

        {

rezultāts = 0;

        }

public void SetResult (int i = 0)

        {

šis.rezultāts = 0;

        }

public void Pievienot (int x)

        {

rezultāts + = x;

        }

public void Atņemt (int x)

        {

rezultāts - = x;

        }

public int GetResult ()

        {

atgriešanās rezultāts;

        }

publiskais Memento CreateMemento ()

        {

Memento memento = jauns Memento ();

piemiņa.SetState (rezultāts);

atgriešanās piemiņa;

        }

public void SetMemento (Memento memento)

        {

rezultāts = piemiņa.GetState ();

        }

    }

sabiedrības klase Memento

    {

int stāvoklis;

publiskais int GetState ()

        {

atgriešanās stāvoklis;

        }

public void SetState (int stāvoklis)

        {

šī.valsts = valsts;

        }

    }

Memento dizaina modelis sniedz mums ērtu veidu, kā saglabāt un izgūt objekta stāvokli. Varat izmantot šo modeli, lai veiktu atsaukšanu vai atcelšanu. Tomēr viens no šī modeļa izmantošanas trūkumiem ir tas, ka objekta stāvokļa saglabāšana un atjaunošana vēlāk var aizņemt diezgan ilgu laiku, t.i., tas var kaitēt lietojumprogrammas veiktspējai. Tāpēc, izmantojot Memento modeli, noteikti paturiet prātā veiktspēju. Visbeidzot, pārliecinieties arī, ka jūsu objekta iekšējā struktūra nav pakļauta ārējai pasaulei.

$config[zx-auto] not found$config[zx-overlay] not found