+90 (312) 244 63 25
tr
en

Tasarım Örüntüleri

1.287
Tasarım Örüntüleri

Nesne yönelimli programlamada uygulama tasarımları yaparken, karşımıza çıkacak her türlü sorunlarda sürekli en başa dönerek sorunlardan arındırılmış yeni bir tasarım elde etmeye çalışılır. Sorunları her zaman sıfırdan başlayarak çözmek, oldukça zahmetli ve zaman alan bir işlemdir. Bunun gibi birçok dezavantajlardan dolayı tasarım örüntüleri tasarım ve yazılım hayatımıza birer mum ışığı olmuştur.

Tasarım örüntülerinin her biri analiz edilip testten geçmiş, kendini kanıtlamış ve model haline gelmiş olmalarından dolayı uygulama geliştirme sürecine olumlu etkilerde bulunurlar. Bu da süreçleri daha hızlı şekilde bitirmeyi sağlar. Güzel bir yazılım tasarımı sayesinde geliştirdiğimiz uygulamaların ilerleyen zamanlarında görülebilecek sorunları dikkate almamızı sağlar. Tasarım örüntülerinin sürekli olarak yeniden kullanılması küçük sorunların büyümeden ortadan yok olmasına yardımcı olur. Örüntüleri sürekli kullanan ve aşina olan uygulama geliştiricileri ve mimarlar için kodları okumak oldukça kolaylaşır.

Tasarım örüntüleri;

Oluşturucu Tasarım

Yapısal Tasarım

Davranışsal Tasarım

Olmak üzere üç farklı kategoriye ayrılır.

Oluşturucu Tasarım Örüntüleri

Nesne oluşturma işleyiş biçimini ele alan ve duruma uygun bir biçimde nesne oluşturmaya çalışan tasarım örüntüleridir. Örüntü dışındaki basit nesne oluşturma yöntemleri tasarımlarda problemlere ve tasarımlara karmaşıklıklara yol açabilir.

Oluşturucu tasarım örüntülerinin amacı;

Kod yapısına esneklik sağlar.

Kodun tekrar tekrar kullanılmasını sağlar.

Oluşturucu tasarım örüntülerini oluşturan kısımları inceleyecek olursak

Abstract Factory Tasarım Örüntüsü

Bu tasarım örüntüsü bizlere, ilgili veya bağımlı nesneleri, somut sınıflarını belirtmeden oluşturmamızı sağlayan ara yüz sunar.

Builder Tasarım Örüntüsü

Oluşturucu tasarım örüntüsünde karmaşık olan nesne yapımızı bizlere adım adım oluşturmamızı sağlar.

Örneğin bir ev yapımını düşünelim. Bunu tek bir nesne olarak tanımladığımızda bir evin birçok özelliği olabilir. Her defasında aynı özellikte ev oluşturulmayacağı için kullanılmayacak özellikteki değişkenler sürekli olarak null değer olarak dönecektir ve bu istenilmeyen bir yapı türüdür. Bunun yerine oluşturucu yardımı ile bir nesne birden fazla oluşturucu nesnelere bölünerek istenilen özellikteki ev oluşturulur.

Factory Method Tasarım Örüntüsü

Bir üst sınıfta nesne oluşturabilmemiz için ara birim sağlar ve bu oluşturduğumuz nesne türünü alt sınıflar ile değiştirebilmemize olanak tanır.

Prototype Tasarım Örüntüsü

Oluşturduğumuz kod yapımızı sınıflardan bağımsız olarak, oluşturduğumuz nesneleri kopyalamamıza olanak sağlar.

Singleton Tasarım Örüntüsü

Bir sınıfa ait sadece bir örneğe izin verir. Nesneye global bir erişim noktası olmasını sağlar.

Object Pool Tasarım Örüntüsü

Yazılım geliştirmede performans çok önemli bir yer kaplar. Çoğu zaman performans problemleri ile karşı karşıya kalabiliriz. Nesne oluşturmak ise performans açısından önemli bir olaydır. Prototip tasarım örüntüsü nesneleri kopyalayarak önemli ölçüde performansa katkı sağlar. Nesne havuzu tasarım örüntüsü ise oluşturulması zor olan nesneleri kullanmak için bizlere bir işleyiş biçimi sunar. İstemcilere belirli süre için nesne paylaşımı sağlar.

Yapısal Tasarım Örüntüleri

Bir sistemin farklı kısımlarını esnek ve genişletilebilir bir biçimde nasıl bir araya toplayacağımızı gösterir. Nesneleri ve sınıfları daha büyük yapılara nasıl dahil etmemiz gerektiğini açıklar.

Adapter Tasarım Örüntüsü

Bir sınıfın ya da sınıfların sahip olduğu arabirimlerini istemcilerin anlayabileceği farklı bir arabirimine dönüştürmeyi sağlar. Bir arada çalışamayacak olan bağdaştırıcı sınıflarının çalışmalarına olanak sağlar. Aksi halde birbiri ile uyuşmayan arabirimler nedeniyle bu mümkün olmayacaktır.

Örnek olarak XML den JSON a bağdaştırıcılar oluşturabiliriz. Bağdaştırıcı bir çağrı aldığında XML verilerini JSON yapısına dönüştürerek JSON olarak işlem yapabilmemize olanak sağlar.

Bridge Tasarım Örüntüsü

Tasarımımızdaki büyük bir sınıfı ya da çok yakın ilişkili sınıfları, birbirine bağımlı olmadan geliştirilebilen iki bileşene ayırmamıza olanak sağlar. Yani soyutlama ile uygulamayı birbirinden ayırır.

Örnek verilecek olursa büyük bir sınıf tanımlamasının olduğunu varsayalım. Bu sınıf içinde tanımlı X model beyaz araba ile Y model beyaz araba, X model kırmızı araba ile Y model kırmızı araba olsun. Araba ve renk sınıfı oluşturulur. Araba modelinin altında türetilmiş yine X model ve Y model araba diye farklı iki sınıf oluşturulur. Renk sınıfının altında ise beyaz ve kırmızı renklerinde iki farklı sınıf oluşturulur. Bundan sonra istediğimiz model ve renkte sınıfları köprüleyerek yeni nesneler türetebiliriz.

Composite Tasarım Örüntüsü

Programlama yaparken nesnelerimizi bir düzene sokmamızı sağlar. Nesnelerimizi hiyeraşik yapılar şeklinde ağaç yapısına dönüştürür. Oluşturduğumuz bu ağaç yapısında tek tek nesneler gibi çalışmamıza olanak sağlar.

Örnek olarak askeri yapılar bu tasarım örüntüsünü çok güzel bir şekilde açıklayacaktır. Hiyerarşinin en üstünde bulunan rütbe bir genelge yayınladığında bu en alt rütbeye ulaşana kadar kim ne yapacağını öğrenir ve bu sayede tüm yapı güncellenir.

Decorator Tasarım Örüntüsü

Uygulamalardaki nesnelerimize dinamik olarak yeni davranış, özellik eklememizi sağlayan tasarım örüntüsüdür.

Nesne içinde yeni özelik tanımlamak biraz karışık gibi görünse de sınıfın altında sınıf tanımlama ihtiyacını ortadan kaldırıyor.

Facade Tasarım Örüntüsü

Bu tasarım örüntüsünde direk olarak alt sistemler kullanılmaz. Yardımcı ara yüzler yazılarak alt sistemlerim kullanımı daha kolay hale getirilir.

Facade tasarım örüntüsünde oluşturulan sistemde birden fazla sınıflar mevcuttur. Sınıflar arasında ilişkiler vardır. Bir işlem gerçekleştirmek istenildiğinde alt sistemler için oluşturulan sınıflardaki metodlar belirli bir sıra ile çağrılmalıdır. Git gide büyüyen bir facade sınıfı olduğunda davranışların belirli bir kısmını farklı bir sınıfa taşıyarak yeni bir facade sınıfı oluşturulabilir.

Flyweight Tasarım Örüntüsü

Tüm verileri tek bir nesnede tutmak yerine birden fazla nesne arasında paylaştırılır ve Ram miktarına daha fazla nesne sığmasını sağlar. Bu sayede Ram’ den tasarruf etmemizi sağlar.

Proxy Tasarım Örüntüsü

Adından da anlaşılacağı gibi orijinal nesnelerin yerine bir vekil ya da yer tutucu sağlar. Oluşturduğumuz orijinal nesneyi gizler ve ona erişimi kontrol eder.

Davranışsal Tasarım Örüntüleri

Bu tasarım örüntüleri farklı nesneler arasındaki ortak iletişimlerin belirlenmesi ile ilgilidir. Böylelikle iletişime esneklik katar.

Chain of Responsibility Tasarım Örüntüleri

Gelen isteklerin işleyici zincirleri boyunca işlenmesini sağlar. Bu tasarım örüntüsü nesnenin hangi nesne tarafından alınacağı ve işleneceğini bilmeden bir komut göndermesine izin verir. Gelen istek nesneler arasında dolaşır ve bu da onu zincirin parçası haline getirir. Zincir içerisindeki nesnelerden her biri gelen isteği, zincir içerisindeki diğer bir nesneye aktarabilir, sonuçlandırabilir ya da hem aktarıp hem de sonuca kavuşturabilir.

Command Tasarım Örüntüleri

Gelen isteği tüm bilgileriyle birlikte bir nesne içerisine paketler diğer bir deyişle kapsülleme işlemini gerçekleştirir. Yani diğer nesnelerden gizler ve erişimlerini kısıtlar. Bu işlemler, diğer istemcilerin farklı istekleriyle birlikte herhangi bir isteğin yürütülmesindeki sürenin uzamasına ve sıraya alınmasında rol oynar.

Daha anlaşılır olması için örnek verilecek olursa, bir çay bahçesine gittiğimizde biz istemci olarak gelen garsona isteğimizi beyan ederiz. Garson isteklerimizi yazar ve bunu işletme kısmına iletir. İsteğimiz işleme alınır. Sırası geldiğinde isteğimiz işlenir ve kontrollerden sonra bize gelir.

Mediator Tasarım Örüntüleri

Uygulamalarımızdaki nesnelerin birbirleri ile haberleşmesinde kısıtlamalar getirir. Nesnelerin ortak bir aracı yardımı ile çalışmasını sağlar.

Daha anlaşılır olması için en güzel örnek havalimanı işleyişidir. Tüm uçaklar birbiri ile doğrudan haberleşmez ama aradaki kule aracılığı ile tüm işlemler koordine edilir.

ETİKETLER:

Etiketler: , , , , ,

Ziyaretçi Yorumları

Henüz yorum yapılmamış. İlk yorumu aşağıdaki form aracılığıyla siz yapabilirsiniz.