dotSITE
Форумы Work in Murano Software. Учебник по C#
новости материалы решения форумы группы настройки/о проекте

Memento

Memento - паттерн, реализующий механизм сохранения внутреннего состояния класса с возможностью последующего восстановления.

        namespace Memento_DesignPattern
        {
            using System;

            class Originator 
            {
                private double manufacturer=0;
                private double distributor = 0;
                private double retailer = 0;

                public void MakeSale(double purchasePrice)
                {
                    manufacturer += purchasePrice * .40;
                    distributor += purchasePrice *.3;
                    retailer += purchasePrice *.3;
                }

                public Memento CreateMemento()
                {
                    return (new Memento(manufacturer, distributor, retailer));          
                }
                
                public void SetMemento(Memento m)
                {
                    manufacturer = m.A;
                    distributor = m.B;
                    retailer = m.C;
                }       
            }

            class Memento 
            {
                private double iA;
                private double iB;
                private double iC;

                public Memento(double a, double b, double c)
                {
                    iA = a;
                    iB = b;
                    iC = c;
                }

                public double A 
                {
                    get 
                    {
                        return iA;
                    }
                }

                public double B 
                {
                    get 
                    {
                        return iB;
                    }
                }

                public double C 
                {
                    get 
                    {
                        return iC;
                    }
                }
            }

            class caretaker 
            {
                
            }

            public class Client
            {
                public static int Main(string[] args)
                {           
                    Originator o = new Originator();
                    
                    o.MakeSale(45.0);
                    o.MakeSale(60.0);

                    Memento m = o.CreateMemento();

                    o.MakeSale(60.0);
                    o.MakeSale(10.0);
                    o.MakeSale(320.0);

                    o.SetMemento(m);

                    return 0;
                }
            }
        }
        

Back
Контакт Реклама на сайте Спонсорам Веб мастерам

Лицензионное соглашение - © 2000-2010 dotSITE
Хостинг .NET предоставлен PARKING.RU
Поддержку сайта осуществляет Murano Software Inc., Offshore software development