TASARIM ÖRÜNTÜLERİ

Command

Behavioral Patterns bir örneği olan Command örüntü istemcinin hedef nesne üzerinde yaptığı işlemleri bir komut objesi haline gelip işleterek bu komutların saklanması(macro), komutların geri alınması gibi uygulamanıza esneklikler kazandırır.

Onur Dayıbaşı
Design Patterns

--

Bilgi Notu: Diğer tüm Tasarım Örüntüleri yazıma bu linkten ulaşabilirsiniz.

Hangi Durumlarda

Command örüntüsü denilince UI Uygulamaları aklıma geliyor. Örneğin Word, Photoshop, Maya. Çünkü tüm bu araçlarda yaptığınız işleri geri alma (Undo) veya yaptığınız işleri gruplayarak tekrar çalıştırma (Macro) ihtiyacı vardır. Bu tarz bir şey yapabilmek

Aynı şekilde elimizdeki bu komutları bir kuyruğa yazıp işletebilir, işletme sırasında durdurup , devam ettirebiliriz. Bu sayede remote çağrılarıda gerçekleştirebiliriz.

Yapısı

Command Class Diagram

Invoker: Çalıştıracağı Command arayüzünden komutları execute eder.

Command:içerisinde execute vb komut olan arayüz (interface)

Command1, Command2 .. : Receiver üzerinde işlem yapabilecek istemci için anlamlı komutlardır.

Receiver: Servis sağlayan asıl sınıftır.

Kod Örneği

Bu örüntüyü basit bir Word örneği ile anlatalım.(http://bit.ly/1OrBAuC ) Document: TextBox içerisindeki metni değiştirerek Bold, Italic, Underline haline getiriyor.

Receiver Class

Command yapımızı tanımlıyoruz. Command örüntüsü için en önemli konu execute() fonksiyonu, yani işlemi gerçekleştirildiği fonksiyon. Birde bu işlemi geriye alabilmek için undo() fonksiyonunu tanımlıyoruz.

Command Interface

Birçok UndoableCommand sınıfımız olabilir.

  • BoldCommand,
  • ItalicCommand,
  • UnderscoreCommand,
  • CopyCommand gibi.

Bu Command sınıfı dokümanın değiştirilmeden önceki state tutuyorki undo() işlemi sonrasında yaptığı işlemi geri alabilsin. execute() fonksiyonunda Dokuman nesnesi üzerinden ilgili değişikliği gerçekleştiriyor.

BoldCommand Class

Command Manager sınıfı çalıştırılmak istenen komutları Stack veriyapısında tutuyorki , undo işlemi sırasında en son yapılandan eskiye doğru yapılan işlemleri geriye alabilsin.

Command Manager

Burada ana uygulama kullanıcının davranışlarını Command olarak CommandManager iletmesi ve işletilmesinin sağlanması.

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--