Jun 06
Aslında Java ile biraz uğraştıysanız Adapter Pattern size tanıdık gelecektir. WindowAdapter, ComponentAdapter, MouseAdapter vb sınıflar Adapter Pattern özelliğini kullanırlar. Adapter Pattern’ın en önemli özelliği uygulanabilirliği ve tekrar kullanabilirliği(reusability) sağlamasıdır.
Aşağıdaki kod Adapter Pattern’a bir örnektir.
interface Clean { public void makeClean(); } class Office implements Clean{ public void makeClean() { System.out.println("Ofis temizlendi"); } } class Workshop implements Clean{ public void makeClean() { System.out.println("İşyeri temizlendi"); } }
Bizim Clean işlemi yapan bir arayüzümüz var. Bu işlemi Office ve Workshop sınıflarında kullanıyorum. Fakat daha sonra başka bir sınıfta Clean işleminden sonra Dry işlemi de yapmak istiyorum. Bunun için Clean arayüzünü içeren başka bir arayüz oluşturuyorum.
interface Extra extends Clean{ public void makeDry(); } class School implements Extra{ public void makeClean() { System.out.println("Okul temizlendi"); } public void makeDry() { System.out.println("Okul kurulandı"); } }
Bu yeni arayüzü School sınıfında implement ederek gerekli işlemleri yapıyorum.
Şimdi sıra kodumuzu test etmeye geldi.
class Test { public static void Jobs(Extra job) { if (job instanceof Clean) ((Clean)job).makeClean(); if (job instanceof Extra) ((Extra)job).makeDry(); } public static void main(String[] args) { Extra e = new School(); Jobs(e); Clean c1 = new Office(); Clean c2 = new Workshop(); c1.makeClean(); c2.makeClean(); e.makeClean(); } }
Bu kodun ekran çıktısı

Son Yorumlar