İçeriğe geç →

C# Memento Pattern Kullanımı

Güzel bir konu ile tekrar merhaba arkadaşlar.
Bu makalemde sizlere nesnenin hallerini tutma ihtiyacı duyduğunuzda yani nesnenin farklı halleri arasında geçiş yapabilmeniz gerektiği durumlarda kullanabileceğiniz güzel bir tasarım deseni olan Memento Pattern’inin kullanımından bahsedeceğim.

Açıkcası GOF tasarım desenleri hakkındaki makalelerime başlangıcımı uzun zamandır düşünüyorum fakat bir türlü fırsat bulamamıştım, bir projem üzerinde kullanmam gerekince bu bana adı üstünde Hatırlayıcı(Memento) bana başlamamı hatırlattı. 🙂

Kendisi Behavioral tasarım kalıpları gurubunda olan bir tasarım desenidir. Yukarıda da bahsettiğimiz üzere nesnenin bazı özelliklerinin veya tamamını tutabilmemizi sağlamaktadır.

Hızlıca UML Diagramına bakmak gerekirse:

MementoDiagram

Originator: Bu sınıf durumu tutulacak olan nesnemiz oluyor, eski veya yeni halini tutmamızı sağlayacak metotlar burada yer alacak.
Memento: Bu sınıf ise, asıl nesnemizin istediğimiz alanları tutan sınıftır.
Caretaker: Geri dönüş adımlarımızı Memento tipinden tutacak olan sınıftır.

UML diagramını incelediğimize göre pekiştirmek için hemen basit bir örnek yapalım.

Web veya Windows tabanlı bir uygulama geliştirdiğimizi düşünelim. Uygulamamızda kullanıcının kendi ayarlarını yapabileceği bir Settings bölümü bulunsun. Memento desenini uygulayacağımız nokta ise: Get Default Settings tarzında bir buton koyacağız ve kullanıcı değiştirdiği ayarı orjinal haline geri döndürebilmesini sağlıyor olacağız.

Öncelikle Settings sınıfımızı oluşturalım ve bu bizim Originator‘umuzu temsil edecek yani ayarların tutulacağı sınıfımız.

Settings sınıfımızı oluşturduğumuza göre şimdi Memento‘yu üstlenecek olan SettingsMemento sınıfımızı hazırlayalım.

Şimdi SettingsCareTaker sınıfımızı oluşturarak geri dönüş adımlarımızı Memento tipinden tutacak olan sınıfımızı hazırlayalım.

Ever her şey hazır olduğuna göre şimdi kullanımına bakalım.

İşte bu kadar basit. Umarım anlaşılması kolay bir örnek olmuştur.

Diğer makalelerimde görüşmek dileğiyle.

 

Bu makale toplam (1267) kez okunmuştur.

22
0



Kategori: Tasarım Kalıpları (Design Patterns)

Yorumlar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*