Dizayn paternleri, prensipleri ve UML’in kullanımı

Bu bölümde sohbetimiz dizayn prensipleri, dizayn paternleri, antipaternler ve UML’in kullanımı üzerine.

Reklamlar

Swift Delegation Pattern

Aşağıdaki yazı yakında çıkacak olan kitabımdan bir alıntıdır izinsiz kopyalanıp, kullanılamaz.

Bu patern bir nesnenin yerine getirmesi gereken bir görevi kendisi yapmak yerine başka bir nesneye -delege ederek- görevi delege ettiği nesneye yaptırmasını tematize eder. Başka bir deyişle, nesne söz konusu görevi farklı bir nesnenin yardımıyla gerçekleştirir.

Bu patern’in implementasyonunda anahtar nokta delege eden ve edilenin aynı protokolü (interface’i) desteklemesidir. Ayrıca delege eden bu protokol türünde bir nesne referansı (property) içermelidir. Bu sayede o property’e atanacak olan nesneye görev delege edilmiş olur.

swift delegation patern uml diagram

swift delegation patern uml diagram

Şekil 6.1’deki UML diyagramında görülen C sınıfı, Task() isimli fonksiyonla sembolize edilen görevi A veya B’den yardım alarak (A veya B türündeki bir nesneye delege ederek) gerçekleştirecektir. Bu karar, ToDelegation() isimli fonksiyona gönderilen parametrenin polimorfik şekildeki kullanımına dayandırılmıştır. Yani ToDelegation() isimli fonksiyona A veya B türünde bir nesne parametre olarak geçilmekte ve görev o nesneye delege edilmektedir.

protocol Delegation

{

func Task()

}

class A : Delegation

{

func Task()

{

print(“Görevi A nesnesi gerçekleştirdi”)

}

}

class B : Delegation

{

func Task()

{

print(“Görevi B nesnesi gerçekleştirdi”)

}

}

class C : Delegation

{

var delegate:Delegation?

func ToDelegation(delegate:Delegation)

{

self.delegate = delegate

}

func Task()

{

self.delegate!.Task()

}

}

////// TEST ///////

var c = C()

// A’ya delege et

c.ToDelegation(A())

c.Task()

// B’ye delege et

c.ToDelegation(B())

c.Task()

Çıktı:

Görevi A nesnesi gerçekleştirdi

Görevi B nesnesi gerçekleştirdi

Dizayn Patern Nedir ? What is design pattern ?

Son günlerde bu sorunun arama motorlarında sıkça aratıldığını görüyorum. Bu konu hakkında geniş bilgi için C++, Java ve C# ile UML ve Dizayn Paternleri isimli kitabımdan faydalanabilirsiniz. Aşağıdaki yazı söz konusu kitaptan kısa bir alıntı olup izinsiz ve referans vermeden kullanılamaz.

c++ java ve c# ile uml ve dizayn paternleri kitap

c++ java ve c# ile uml ve dizayn paternleri kitap

Okumaya devam et