yineleyici

Yineleyici , davranışsal bir tasarım desenidir. Birleştirilmiş nesnelerin her birinin açıklamalarını kullanmadan, birleştirilmiş bir nesnenin öğelerine sıralı erişim sağlayan bir nesneyi temsil eder.

yineleyici

Örneğin, ağaç, bağlantılı liste, karma tablo ve dizi gibi öğeler, bir Iterator nesnesi kullanılarak incelenebilir (ve değiştirilebilir).

Öğeler arasında yineleme, koleksiyonun kendisi tarafından değil, yineleyici nesnesi tarafından yapılır. Bu, koleksiyonun arayüzünü ve uygulanmasını basitleştirir ve endişelerin daha mantıklı bir şekilde ayrılmasını destekler.

Tamamen uygulanmış bir yineleyicinin bir özelliği, yineleyiciyi kullanan kodun yinelenen kümenin türü hakkında hiçbir şey bilmemesidir.

Bu yaklaşım çok sık kullanılır. Örneğin, veritabanına bir SQL sorgusu gönderirsiniz ve yanıt olarak size bir yineleyici döndürür (SQL terimlerinde buna genellikle imleç denir). Ve ortaya çıkan yineleyici yardımıyla, SQL yanıtından satırları tek tek alabilirsiniz.

emretmek

Komut, nesne yönelimli programlamada kullanılan ve bir eylemi temsil eden davranışsal bir tasarım modelidir. Komut nesnesi, eylemin kendisini ve parametrelerini içerir.

Emretmek

Bir yöntemi çağırmak için genellikle şunlara ihtiyacınız vardır:

  • nesne referansı
  • yöntem adı (yöntem referansı)
  • yöntem parametre değerleri
  • kullanılan nesneleri içeren bağlama referans

Tüm bu verilerin tek bir nesnede paketlenmesi gerekir - Command ( komut ).

Ancak hepsi bu kadar değil: sonuçta birinin komutu yürütmesi gerekiyor. Yani bu kalıp dört varlık daha içerir: komutlar ( komut ), komut alıcısı ( alıcı ), komut çağırıcısı ( çağıran ) ve müşteri ( client ).

Bir objeemretmekalıcıyı bilir ve alıcı yöntemini çağırır. Alıcı parametre değerleri komutta saklanır. Arayan (çağıran), komutun nasıl yürütüleceğini bilir ve muhtemelen yürütülen komutları takip eder. Arayan (çağıran) belirli bir komut hakkında hiçbir şey bilmez, sadece arayüz hakkında bilgi sahibi olur.

Her iki nesne de (çağıran nesne ve birkaç komut nesnesi) istemci nesnesine aittir. İstemci hangi komutların ne zaman yürütüleceğine karar verir. Bir komutu yürütmek için, komut nesnesini arayana (çağıran) iletir.

Komut nesnelerini kullanmak, herhangi bir zamanda sınıf yöntemlerini veya yöntem parametrelerini bilmek zorunda kalmadan, yetki vermeniz veya yöntem çağrıları yapmanız gereken paylaşılan bileşenleri oluşturmayı kolaylaştırır.

Çağıran nesneyi (çağırıcı) kullanmak, müşterinin bu hesaplama modeli hakkında bilgi sahibi olmasına gerek kalmadan yürütülen komutların kaydını tutmanıza olanak tanır (bu tür bir hesaplama, örneğin geri alma ve yineleme komutunu uygulamak için yararlı olabilir).

Örneğin, çeşitli görevleri bir zamanlamaya göre gerçekleştirmenize izin veren bir program yazıyorsunuz. Bir yandan, programınız görevleri takip eder ve bunların başlatılmasını yönetir, diğer yandan, her biri kendi türünde komutları yürütebilen birkaç yürütücüye sahip olabilir. Örneğin, SMS göndermek, mektup göndermek, Telegram'a mesaj göndermek vb.

Gözlemci

Observer davranışsal bir tasarım desenidir. Bu sınıfın bir nesnesinin diğer nesnelerin durumundaki değişiklikler hakkında bildirimler almasına ve böylece onları gözlemlemesine izin veren bir sınıf mekanizması uygular.

Gözlemci

Diğer sınıfların abone olduğu sınıflara Subjects , abone olan sınıflara Observers adı verilir .

Gözlemci modelini uygularken, aşağıdaki sınıflar yaygın olarak kullanılır:

  • Gözlemlenebilir - gözlemcileri eklemek, kaldırmak ve bildirmek için yöntemleri tanımlayan bir arayüz;
  • Gözlemci - gözlemcinin bildirimi aldığı arayüz;
  • ConcreteObservable , Observable arabirimini uygulayan somut bir sınıftır;
  • ConcreteObserver , Observer arayüzünü uygulayan somut bir sınıftır.

Observer modeli sistem şu durumlarda kullanılır:

  • mesaj gönderen en az bir nesne var;
  • en az bir mesaj alıcısı vardır ve bunların sayısı ve yapısı uygulama çalışırken değişebilir;
  • Etkileşen sınıfların güçlü eşleşmesinden kaçınır.

Bu model genellikle, mesaj gönderen kişinin, alıcıların kendilerine sağlanan bilgilerle ne yaptığıyla ilgilenmediği durumlarda kullanılır.

Ziyaretçi

Ziyaretçi , diğer sınıfların nesneleri üzerinde gerçekleştirilen bir işlemi açıklayan davranışsal bir tasarım modelidir. Visitor değiştiğinde, servis verilen sınıfların değiştirilmesine gerek yoktur.

Şablon, çift gönderime başvurmadan kayıp tür bilgilerini kurtarmak için klasik tekniği gösterir.

Ziyaretçi

Bir takım nesneler üzerinde bazı bağlantısız işlemler yapmanız gerekiyor, ancak kodlarını kirletmekten kaçınmalısınız. Ve istenen işlemi gerçekleştirmeden önce her bir düğümün türünü sorgulamanın ve işaretçiyi doğru türe çevirmenin hiçbir yolu veya isteği yoktur.

Şablon şu durumlarda kullanılmalıdır:

  • farklı arayüzlere sahip farklı sınıfların çeşitli nesneleri vardır, ancak bunlar üzerinde belirli sınıflara bağlı işlemler gerçekleştirilmelidir;
  • yapı üzerinde yapıyı karmaşıklaştıran çeşitli işlemler yapmak gerekir;
  • yapı üzerinde yeni işlemler sıklıkla eklenir.

arabulucu

Arabulucu , gevşek bağlantıyı korurken ve nesnelerin açıkça birbirine atıfta bulunma ihtiyacını ortadan kaldırırken birden fazla nesnenin etkileşime girmesine izin veren davranışsal bir tasarım modelidir.

arabulucu

Arabulucu modeli, birçok nesnenin etkileşimini sağlarken, gevşek bir bağlantı oluşturur ve nesnelerin açıkça birbirine atıfta bulunma ihtiyacını ortadan kaldırır.

Arabulucu, nesnelerle bilgi alışverişi için bir arayüz tanımlar.İş arkadaşları, Belirli bir arabulucu, nesnelerin eylemlerini koordine ederİş arkadaşları.

Her Meslektaş sınıfı , nesnesini bilirarabulucu, tüm Meslektaşlar yalnızca bir aracıyla bilgi alışverişinde bulunur, onun yokluğunda doğrudan bilgi alışverişinde bulunmaları gerekir.

İş arkadaşlarıBayi/span>'a istek gönderin ve ondan istek alın. Arabulucu, her talebi bir veya daha fazla kişiye ileterek işbirlikçi davranış uygular.İş arkadaşları.