Önleme düzeni - Interceptor pattern

Durdurucu örneği

Nın alanında yazılım geliştirme, bir önleme düzeni bir yazılım tasarım deseni yazılım sistemleri veya çerçeveler olağan işlem döngülerini değiştirmek veya genişletmek için bir yol sunmak istiyorlar. Örneğin, bir web sunucusu için (basitleştirilmiş) tipik bir işlem sırası, tarayıcıdan bir URI almak, onu diskteki bir dosyaya eşlemek, dosyayı açmak ve içeriğini tarayıcıya göndermektir. Bu adımlardan herhangi biri değiştirilebilir veya değiştirilebilir, ör. URI'lerin dosya adlarıyla eşlenme şeklini değiştirerek veya dosya içeriklerini işleyen yeni bir adım ekleyerek.

Modelin temel yönleri, değişikliğin şeffaf ve kullanılmış otomatik olarak. Esasen, sistemin geri kalanının bir şeyin eklendiğini veya değiştirildiğini bilmesi gerekmez ve eskisi gibi çalışmaya devam edebilir. Bunu kolaylaştırmak için bir önceden tanımlanmış arayüz uzatma uygulanmalıdır, bir tür sevk durdurucuların kaydedildiği yerlerde mekanizma gereklidir (bu, çalışma zamanında dinamik veya statik olabilir, örneğin yapılandırma dosyaları aracılığıyla) ve bağlam nesneleri çerçevenin iç durumuna erişime izin veren sağlanır.[1]

Kullanımlar ve Bağlam

Bu kalıbın tipik kullanıcıları web sunucularıdır[2] (yukarıda belirtildiği gibi), nesne-[3] ve mesaj odaklı ara yazılım[4]

Bu modelin uygulanmasına bir örnek, javax.servlet.Filter arayüz, parçası olan Java Platformu, Kurumsal Sürüm.

Boyut odaklı programlama (AOP), bazı durumlarda bir durdurucunun yeteneğini sağlamak için de kullanılabilir, ancak AOP tipik olarak tanımlanan öğeleri kullanmaz.[açıklama gerekli ] önleme düzeni için.

Referanslar

  1. ^ "Schmidt, Stal, Rohnert & Buschmann:" Model Odaklı Yazılım Mimarisi Cilt 2: Eşzamanlı ve Ağa Bağlı Nesneler için Modeller ", s. 109-140, Nisan 2001". Arşivlenen orijinal 2017-12-23 tarihinde. Alındı 2009-11-24.
  2. ^ Apache Software Foundation: Tomcat 6.0 Channel Interceptor Reference, erişim tarihi 2009 Kasım 24
  3. ^ OMG, "CORBA v3.1, Kısım I: Arayüzler", Bölüm 16 "Taşınabilir Durdurucular", Ocak 2008
  4. ^ E. Curry, D. Chambers ve G. Lyons, Dağıtılmış Olay Tabanlı Sistemler Üzerine Üçüncü Uluslararası Çalıştay (DEBS '04), ICSE '04, Edinburgh, İskoçya, İngiltere, 2004.