Adapter Tasarım Deseni

Herkese merhaba, C# yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda tasarım desenlerinden biri olan adapter tasarım desenini anlatacağım. Hadi başlayalım !
Table of Contents
Aslında bu tasarım deseni diğer tüm tasarım desenlerinde de olduğu gibi C# diline özgü bir kavram değil, tüm nesne yönelimli programlama dillerinde daha temiz kod yazabilmek için oluşturulmuş ve yazılımcılar tarafından da kabul görmüş yazılı olmayan kurallardır ve nesne yönelimli programlama yapılabilen tüm dillerde uygulanabilmektedir.
Adapter Tasarım Deseni Nedir?
Adapter tasarım deseni, bir sınıfın arabirimini, başka bir sınıfın beklediği arabirime uyacak şekilde değiştirmek için kullanılan bir tasarım desenidir. Bu desen, farklı arabirimleri olan sınıflar arasında uyumluluk sağlamak için kullanılabilir.
C# programlama dili, nesne yönelimli bir dil olduğu için Adapter tasarım deseni için oldukça uygun bir dildir. Bu makalede, C# kullanarak Adapter tasarım deseni uygulamasını göstereceğim.
Örnek Senaryo
Bir mobil uygulama geliştirdiğinizi düşünün. Uygulamanızda müzik çalma özelliği var ve kullanıcılarınızın farklı cihazlardan müzik çalmasını sağlamak istiyorsunuz. Ancak, farklı cihazlar için farklı müzik çalma arabirimlerine ihtiyacınız var.
Bu senaryoda, Adapter tasarım deseni kullanarak farklı müzik çalma arabirimlerini uyumlu hale getireceğiz.
MüzikÇalar Arayüzünün Oluşturulması
İlk olarak, MüzikÇalar arabirimimizi tanımlayalım:
public interface IMusicPlayer
{
void Play(string fileName);
void Pause();
void Stop();
}
MediaPlayer Sınıfının Oluşturulması
Ardından, müzik çalma özelliğini destekleyen bir sınıf oluşturalım:
public class MediaPlayer : IMusicPlayer
{
public void Play(string fileName)
{
Console.WriteLine("Playing: " + fileName);
}
public void Pause()
{
Console.WriteLine("Pause");
}
public void Stop()
{
Console.WriteLine("Stop");
}
}
Bu sınıf, IMusicPlayer arabirimini uygulamaktadır. Ancak, farklı cihazlarda farklı müzik çalma arabirimleri kullanılabilir. Bu durumda, Adapter tasarım deseni kullanarak farklı müzik çalma arabirimlerini uyumlu hale getirebiliriz.
USBMusicPlayerAdapter Sınıfının Oluşturulması
Örneğin, bir USB bellek müzik çalar için bir adaptör oluşturalım:
public class USBMusicPlayerAdapter : IMusicPlayer
{
private readonly USBMusicPlayer _usbMusicPlayer;
public USBMusicPlayerAdapter(USBMusicPlayer usbMusicPlayer)
{
_usbMusicPlayer = usbMusicPlayer;
}
public void Play(string fileName)
{
_usbMusicPlayer.PlayFile(fileName);
}
public void Pause()
{
_usbMusicPlayer.Pause();
}
public void Stop()
{
_usbMusicPlayer.Stop();
}
}
Bu sınıf, IMusicPlayer arabirimini uygular ve USBMusicPlayer sınıfını adapte eder. Yani, USBMusicPlayer sınıfının farklı müzik çalma arabirimini, IMusicPlayer arabirimine uyacak şekilde değiştirir.
USBMusicPlayer Sınıfının Oluşturulması
Son olarak, USBMusicPlayer sınıfını tanımlayalım:
public class USBMusicPlayer
{
public void PlayFile(string fileName)
{
Console.WriteLine("Playing from USB: " + fileName);
}
public void Pause()
{
Console.WriteLine("Pause");
}
public void Stop()
{
Console.WriteLine("Stop");
}
}
Bu sınıf, IMusicPlayer arabirimini uygulamaz, ancak müzik çalma özelliğini destekler. USBMusicPlayerAdapter sınıfı, bu sınıfın müzik çalma özelliğini, IMusicPlayer arabirimine uyacak şekilde değiştirir.
Müziğin Çaldırılması
Bir müzik çalar objesi oluşturalım ve USBMusicPlayerAdapter sınıfını kullanarak müzik çalalım:
static void Main(string[] args)
{
IMusicPlayer musicPlayer = new MediaPlayer();
musicPlayer.Play("song.mp3");
musicPlayer.Pause();
musicPlayer.Stop();
USBMusicPlayer usbMusicPlayer = new USBMusicPlayer();
IMusicPlayer usbAdapter = new USBMusicPlayerAdapter(usbMusicPlayer);
usbAdapter.Play("song.mp3");
usbAdapter.Pause();
usbAdapter.Stop();
}
Bu örnekte, MediaPlayer sınıfı IMusicPlayer arabirimini uygulamakta ve müzik çalma özelliğini desteklemektedir. USBMusicPlayer sınıfı, IMusicPlayer arabirimini uygulamamakta ancak müzik çalma özelliğini desteklemektedir. USBMusicPlayerAdapter sınıfı, IMusicPlayer arabirimini uygulamakta ve USBMusicPlayer sınıfını adapte etmektedir.
Sonuç
Sonuç olarak, Adapter tasarım deseni, farklı arabirimleri olan sınıflar arasında uyumluluk sağlamak için kullanılan bir tasarım desenidir. C# programlama dili, nesne yönelimli bir dil olduğu için Adapter tasarım deseni için oldukça uygun bir dildir. Bu makalede, bir müzik çalma uygulaması örneği üzerinden Adapter tasarım desenini C# kullanarak uygulamayı gösterdik.
Evet adapter tasarım deseni ve C# ile uygulanması bu şekilde olmakta. Tüm C# yazılarımıza buraya, diğer tasarım deseni yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.