C#'ta Memento Design Pattern

C#'ta Memento Design Pattern kullanımı

Memento Design Pattern bir nesnenin o anki durumunun saklanması ve durumunda meydana gelen değişimler sonrası, durumunun saklandığı haline geri döndürülmesi işlemini düzenleyen yapıdır. Behavioral Patterns gurubu içerisinde yer alır.

Kullanım ihtiyacı konusunda ne tür örnekler verebiliriz ?

  • İşletim sistemi veya Programlarda Geri Al Fonksiyonları
  • Grafik/Çizim programlarında history yapıları ile yapılan işlemlerin geriye döndürülmesi.
  • Oyun bölümlerinde ilerlenen seviyenin kayıt edilmesi. İstenildiğinde geçilen seviyelere geri dönüş yapılması gibi...

Orginator: Durumu saklanacak ve geri alınacak yapı. (Nesne)

Momento: Orginator nesnesinin anlık görüntülerini tutan yapı.

CareTaker: Güvenli saklayıcı. Momento nesnesinin içeriğine müdahele etmeden güvenli bir şekilde saklayan yapı.

namespace ConsoleApplication1

{

//Orginator

public class WindowsThemes

{

public string ThemeName { get; set; }


public MementoWindowsThemes Save()

{

MementoWindowsThemes memento = new MementoWindowsThemes(); memento.ThemeName = this.ThemeName;

return memento;

}

public void Undo(MementoWindowsThemes memento)

{

this.ThemeName = memento.ThemeName;

}

}


//Memento

public class MementoWindowsThemes

{

public string ThemeName { get; set; }

}


//Care Taker

public class CareTakerWindowsThemes

{

public MementoWindowsThemes Theme { get; set; }

}


class Program

{

static void Main()

{

WindowsThemes theme = new WindowsThemes(); CareTakerWindowsThemes careTaker = new

CareTakerWindowsThemes();


theme.ThemeName = "Rainly Day"; careTaker.Theme = theme.Save(); Console.WriteLine(theme.ThemeName);


theme.ThemeName = "Windows Classic"; Console.WriteLine(theme.ThemeName);


theme.Undo(careTaker.Theme); Console.WriteLine(theme.ThemeName);


Console.ReadLine();

}

}

}

 

Biz örneğimizde Windows üzerinde bir desktop görüntü teması seçme işlemini konumuz ile ilişkilendirmeye çalışacağız.

Önce Rainly Day Temasını seçeceğiz ardından Windows Classic temasını seçeceğiz daha sonra Windows Classic temasını beğenmeyip Rainly Day temasına geri döneceğiz.

Ozan Dalbudak
Merhaba,1995 doğumluyum. 2009 yılında lisede veritabanı Programcılığı bölümünü kazanarak kariyerime başlamış oldum. Daha sonra Selçuk Üniversitesi'nde Bilgisayar Mühendisliği okuyorum.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git