6-) Adapter Design Pattern

recep orhan
2 min readJul 18, 2021

Adapter Design pattern bir sınıf arayüzünü başka bir sınıf arayüzü olarak kullanmamıza olanak sağlar. Sahip olduğumuz bir class var ve bunu bir methoda göndermek istiyoruz. Ancak methodun istediği interface’e elimizdeki class uymuyorsa Adapter design patternını kullanabiliriz.

Diagramı oluşturan nesnelerin görselleştirilmiş UML diagramı şu şekildedir.

Diagram Bileşenleri

Client: Belirli bir arayüze sahip class ile işlem yapacak olan nesnedir.

Target: Client’ın istediği arayüzdür. Interface, Abstract …

Adabter: Client’ın istediği arayüzü kullanan sınıftır.

Adabtee: Client’ın istediği arayüze sahip değildir ancak arada konulacak bir adapter sınıfı ile client’a gönderilecek sınıftır.

Örnek Senaryo

Yemek yapan bir Chef sınıfımız var. MakeCake methoduyla ISolidFat, IFame, IEgg interface türünde yağ, un, yumurta ile kek pişiriyor.

ISolidFat interface’inden türetilmiş Chef sınıfına gönderilebilecek Butter ve Margarine sınıflarımız var.

Belirli bir an için elimizde Chef sınıfına gönderebileceğimiz ISolidFat interface inden türetilmiş bir sınıf yok. Ancak elimizde Milk sınıfı var ve bir adapter class’ı ile tereyağına dönüştürüp Chef sınıfına gönderebiliriz.

Artık süt sınıfımızı ek bir işlem yaparak tereyağına çevirip chef sınıfına kek yapımı için gönderebiliriz. Aradaki ek işlem Adapter design patternını oluşturan sınıftır.

Bu sorunu adapter design patternı yerine farklı yöntemlerlede çözebilirdik. Kullandığımız yöntemi daha sonra koda baktığımızda belki anlayabiliriz ancak başka bir yaılımcı baktığında kolay anlayamayabilir buda bakım ve ek geliştirme maliyetlerini arttırır. Adapter patternı ile çözüm yolunu belirli standartlara göre yapmış olduk. Hangi ihtiyaç durumlarında bu patternın kullanılacağını bilen biri kodumuza baktığında rahatlıkla sorunu ve çözümü anlayabilecek, değişikliğe gerek varsa kolayca yapabilecektir.

Makalenin kodlarına ve diğer design pattern örneklerine tıklayarak ulaşabilirsiniz.

--

--