C#

Command 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 command tasarım desenini anlatacağım. Hadi başlayalım !

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.

Command Tasarım Deseni Nedir?

Command tasarım deseni, bir nesnenin bir işlemi yürütme isteğini, yürütülecek işlemin ayrı bir nesne olarak temsil edilmesiyle ele alır. Bu tasarım deseni, bir komutu nesne haline getirir ve bu nesne üzerinden işlemin yürütülmesini sağlar. Bu sayede, isteği yapan nesne ile işlemi yürüten nesne arasında sıkı bir bağımlılık oluşmaz ve işlemin yürütülmesi değiştirilebilir hale gelir.

C# dilinde, Command tasarım deseni genellikle bir interface kullanılarak tanımlanır. Bu interface, yürütülecek işlemin methodunu içerir. Ardından, bu interface’ i implemente eden komut nesneleri yaratılır ve yürütülecek işlemi gerçekleştiren method bu nesnelerde tanımlanır. Son olarak, işlemi yürütmek için Command nesnesi yaratılır ve yürütme isteği yapan nesne bu nesneye gönderilir.

C# İle Uygulanması

Aşağıda, C# dilinde Command tasarım deseni ile ilgili örnek bir kod parçası verilmiştir. Bu örnekte, bir MetinEditörü uygulaması tasarlanmıştır. Bu uygulama, klavyeden girilen komutlara göre metin işleme işlemlerini gerçekleştirir.

// Command interface'i
public interface ICommand
{
    void Execute();
}

// Komut nesneleri
public class InsertCommand : ICommand
{
    private string _text;
    private int _position;
    private readonly TextEditor _editor;

    public InsertCommand(TextEditor editor, string text, int position)
    {
        _editor = editor;
        _text = text;
        _position = position;
    }

    public void Execute()
    {
        _editor.Insert(_text, _position);
    }
}

public class DeleteCommand : ICommand
{
    private int _position;
    private readonly TextEditor _editor;

    public DeleteCommand(TextEditor editor, int position)
    {
        _editor = editor;
        _position = position;
    }

    public void Execute()
    {
        _editor.Delete(_position);
    }
}

// Metin editörü nesnesi
public class TextEditor
{
    private string _text;

    public void Insert(string text, int position)
    {
        _text = _text.Insert(position, text);
    }

    public void Delete(int position)
    {
        _text = _text.Remove(position, 1);
    }
}

// İşlem yürütmeyi sağlayan nesne
public class Invoker
{
    private ICommand _command;

    public void SetCommand(ICommand command)
    {
        _command = command;
    }

    public void ExecuteCommand()
    {
        _command.Execute();
    }
}

// Kullanım
class Program
{
    static void Main(string[] args)
    {
        TextEditor editor = new TextEditor();
        Invoker invoker = new Invoker();

        invoker.SetCommand(new InsertCommand(editor, "Hello World", 0));
        invoker.ExecuteCommand(); // "Hello World" eklendi.
        invoker.SetCommand(new DeleteCommand(editor, 5));
        invoker.ExecuteCommand(); // Boşluk karakteri silindi.

        Console.WriteLine(editor.GetText()); // "HelloWorld" yazdırılır.
    }
}

Kod Açıklamaları

Yukarıdaki örnekte, ICommand interface’i yaratılarak InsertCommand ve DeleteCommand nesneleri oluşturulmuştur. Bu nesneler, TextEditor nesnesindeki Insert ve Delete methodlarını çağırmak için kullanılır. Invoker nesnesi, ICommand interface’ ini kullanarak komut nesnesini yürütür.

Program sınıfı, yukarıdaki nesneleri kullanarak bir metin editörü oluşturur ve klavyeden girilen komutlara göre bu editörü kullanır. Bu örnekte, “Hello World” metni 0. karakterden başlayarak eklendikten sonra, 5. karakter silinir. Son olarak, metin editöründeki metin Console.WriteLine() ile yazdırılır.

Sonuç

Bu örnekteki kod parçası, C# dilinde Command tasarım deseninin nasıl uygulanacağına dair basit bir örnek sunmaktadır. Ancak gerçek uygulamalarda daha karmaşık komut nesneleri kullanılabilir.

Evet command 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.

Skorumuz:
Oy Vermek İçin Tıklayın
[Toplam: 0 Ortalama: 0]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu