Adapter Design Pattern

Daha önce planladığım ancak yazmayı ertelediğim tasarım şablonlarına devam ediyorum. Yazmaya başladığım şablon structural(yapısal) tasarım desenlerinden olan adapter tasarım şablonudur. Kısaca tanımını yapalım.

Adapter design pattern ile genellikle sistemimize uymayan sınıfları veya nesneleri, sistemimize adapte etmek için kullanırız. Çevremizde bir çok sistem adaptör mantığını kullanılarak birbirleri ile etkileşir. Örneğin hafıza kart adaptörleri; hafıza kartını bilgisayarımıza direkt olarak takamazsak adaptör kullanarak takarız ve işlemimizi gerçekleştiririz. Şarj için kullanılan adaptörler de bu kapsama girer. Yazılım geliştirme süreçlerinde de aynı mantık geçerlidir. Sistemimize yeni eklemek istediğimiz özellikleri barındıran arayüzü uyumsuz sınıfları veya nesneleri bu şablonu kullanarak sistemimize uyumlu hale getirmekteyiz. 3.parti kütüphaneleri projemize uyumlu hale getirmek gibi.

Temel olarak 2 uyumsuz arayüz arasında köprü görevi görür. 2 çeşit adapter pattern uygulaması vardır. Birincisi ve aşağıdaki uml’de gözüken sistem sınıf adapter yapısıdır. Miras tabanlı adapter işlemi yapar. Diğeri ise object tabanlı adapter yapısıdır. Bu yapı delegate yolu ile işlem yapar.

  • ITarget : ITarget arayüzü client tarafında kullanılan işlemleri gerçekleştirir. Kullanılan ana arayüz sınıfıdır.
  • Client : ITarget arayüzü ile etkileşime girmektedir. Adaptee edilmek istenen sınıf ile uyumsuzdur.
  • Adaptee : Sisteme eklemek istenilen özelliklerin bulunduğu arayüz sınıfıdır. ITarget arayüz sınıfı ile uyumlu değildir.
  • Adapter : Adaptee arayüzünü ITarget arayüzü ile bağlamaktadır. İçerisinde adaptee nesnesini barındırır. Adaptee yapısında olan özellikleri ve metodları adaptee üzerinden sağlamaya yaramaktadır.

Adapter tasarım şablonunu kullanarak basit bir örnek sistemi inceleyelim.

1- IEmployee sınıfı sistemde kullanılan ana arayüzdür. Void tipli salary metodu tanımlanmıştır.

1

2- Employee sınıfı bu arayüzü uygulamaktadır. Salary metodu içerisinde her çalışanın maaş değeri, constructordan dönen isim değeri eklenerek ekrana yazılır.

2

3- Manager sınıfı (adaptee) sisteme eklenmek istenmektedir. Bu sınıfta SalaryBonus metodu bulunmaktadır. Bu metod kullandığımız arayüze uymamaktadır.

3

4- EmployeeAdapter bizim adapter sınıfımızdır. Ana arayüzü ve eklenecek olan(adaptee) sınıfını uygulamaktadır.

4

5 – Çalışan Listesi oluşturuluyor. İki elemean normal employee sınıfından oluşturulmaktadır. Diğer eleman ise adapter sınıfından oluşturuluyor. Show metodu ile tüm çalışanlar listelenmektedir.

5

6 – Ekran görüntüsü aşağıdaki gibidir. John ve Jane adlı çalışanların maaş bilgisi gösterilmektedir. Mark adlı managerin maaş bonusu gösterilmektedir.

6

Adapter design pattern kullanarak yapılmış basit bir örneği inceledik. Daha kapsamlı örnekler internette mevcuttur.

 Kaynakça

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s