State 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 state 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.
State Tasarım Deseni Nedir?
State tasarım deseni, yazılım mühendisliği alanında sıklıkla kullanılan bir tasarım desenidir. Bu desen, nesnelerin durumlarının farklı işlemler ve davranışlarla değişebileceği durumlarda kullanılır. State tasarım deseni, bir nesnenin durumunu temsil eden bir durum nesnesi oluşturarak, nesnenin farklı durumlarına geçiş yapmasını sağlar.
State tasarım deseni, bir nesnenin durumlarının farklı işlemler ve davranışlarla değişebileceği durumlarda kullanılan bir tasarım desenidir. Bu desen, bir nesnenin durumunu temsil eden bir durum nesnesi oluşturarak, nesnenin farklı durumlarına geçiş yapmasını sağlar.
Bu desen, bir nesnenin durumlarının yönetilmesi için birçok farklı yaklaşım sunar. Bunlardan biri, durum makineleri kullanmaktır. Durum makineleri, bir nesnenin farklı durumları arasındaki geçişleri kontrol eden ve yöneten yapılardır. Bu yapılarda, her durum bir durum nesnesi tarafından temsil edilir.
State Tasarım Deseni Nasıl Uygulanır?
State tasarım deseni, bir nesnenin durumları arasındaki geçişleri kontrol etmek için birçok farklı yapı kullanabilir. Bu yapılar, nesnelerin durumlarını ve bu durumlar arasındaki geçişleri tanımlayan sınıflardan oluşur. Bu sınıflar, genellikle durum nesneleri olarak adlandırılır.
C# programlama dili, state tasarım desenini uygulamak için oldukça uygun bir dil olarak kabul edilir. C# dilinde, durum makineleri oluşturmak için genellikle bir arayüz ve bir veya daha fazla durum sınıfı kullanılır.
C# İle Uygulanması
Aşağıdaki örnek, bir müzik çaları nesnesinin farklı durumları arasında geçiş yapmasını sağlayan bir durum makinesi uygulamasını göstermektedir.
interface IMusicPlayerState
{
void Play();
void Pause();
void Stop();
}
class PlayingState : IMusicPlayerState
{
public void Play()
{
Console.WriteLine("Müzik zaten çalıyor.");
}
public void Pause()
{
Console.WriteLine("Müzik duraklatıldı.");
}
public void Stop()
{
Console.WriteLine("Müzik durduruldu.");
}
}
class PausedState : IMusicPlayerState
{
public void Play()
{
Console.WriteLine("Müzik devam ettiriliyor.");
}
public void Pause()
{
Console.WriteLine("Müzik zaten duraklatıldı.");
}
public void Stop()
{
Console.WriteLine("Müzik durduruldu.");
}
}
class StoppedState : IMusicPlayerState
{
public void Play()
{
Console.WriteLine("Müzik çalmaya başladı.");
}
public void Pause()
{
Console.WriteLine("Müzik zaten durdurulmuş durumda.");
}
public void Stop()
{
Console.WriteLine("Müzik zaten durdurulmuş durumda.");
}
}
class MusicPlayer
{
private IMusicPlayerState currentState;
public MusicPlayer()
{
currentState = new StoppedState();
}
public void SetState(IMusicPlayerState state)
{
currentState = state;
}
public void Play()
{
currentState.Play();
}
public void Pause()
{
currentState.Pause();
}
public void Stop()
{
currentState.Stop();
}
}
// Kullanım örneği
MusicPlayer player = new MusicPlayer();
player.Play(); // Müzik çalmaya başladı.
player.Pause(); // Müzik duraklatıldı.
player.Play(); // Müzik devam ettiriliyor.
player.Stop(); // Müzik durduruldu.
Yukarıdaki örnekte, müzik çaları nesnesinin farklı durumlarını temsil eden üç farklı durum sınıfı (PlayingState, PausedState, StoppedState) ve bu sınıfların durum makineleri aracılığıyla kontrol edildiği MusicPlayer sınıfı yer almaktadır. Durum sınıfları, IMusicPlayerState arayüzünü uygular ve nesnenin farklı durumlarında farklı davranışlar sergiler.
Sonuç
MusicPlayer sınıfı, durum sınıflarından birini şu anki durum olarak belirlemek için SetState metodu kullanır. Ardından, nesnenin farklı durumlarında farklı işlemler gerçekleştiren Play, Pause ve Stop metotları çağrılabilir.
Yukarıdaki kod örneği, C# programlama dilinde state tasarım deseni kullanarak bir durum makinesi uygulamasını nasıl oluşturacağınızı göstermektedir. Bu desen, nesnelerin durumlarını kontrol etmek için oldukça kullanışlı bir yapıdır ve C# gibi birçok programlama dilinde kullanılabilir.
Evet state 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.