Magento'nun kaç tasarım modeli var?


15

Magento 2'de kaç tasarım deseni var?

Yanıtlar:


37

Magento 1/2 Tasarım Desenleri

Bölüm 1: MVC

Magento, DOM tabanlı bir yapılandırma katmanı kullanan benzersiz bir MVC deseni kullanır. Uygulamanın yapılandırmasını ve eylemlerini normal Model-Görünüm-Denetleyici mimarisinin üstüne götürmek için xml'den yararlanır.

Bölüm 2: Ön Denetleyici

Magento, uygulaması için iş akışlarını uygulamak için Ön Denetleyici desenini kullanır. Tüm istekleri için tek bir giriş noktası (index.php) vardır. Her şeyin nasıl çalıştığını görelim.

Bölüm 3: Fabrika

Fabrika Yöntemi, Magento'daki sınıfları başlatmak için kullanılır. Magento'da bir sınıfı, bir sınıf grubunu temsil eden soyut bir adı ve ardından bir sınıf adını geçen uygun bir yöntemi çağırarak başlatırsınız. Sınıf grupları ve uygun soyutlamaları modülünüzün / etc / klasöründeki yapılandırma XML dosyalarınızda bildirilir.

Bölüm 4: Singleton

Magento'daki fabrika sınıfı soyutlama ve sınıf grupları gibi, Singleton deseni de Bloklar ve Sınıflar için aynıdır.

Bölüm 5: Kayıt Defteri

o kayıt deseni temel olarak herhangi bir kaynağın kullanması için herhangi bir nesne veya verinin genel global bir kapsamda mevcut olmasına izin veren bir kalıptır.

Bölüm 6: Prototip

Magento'daki Prototip deseni, Soyut Fabrika modelinin bir uzantısı olarak kullanılır. Bir nesneye atanan uygun türlerle uygun bir alt sınıfın başlatılmasını sağlar. Ne anlama geliyor? Temel olarak, üst türü aracılığıyla tanımlanan belirli bir sınıfa ihtiyacınız olduğunda, prototip deseni, ihtiyacınız olanı işleyebilecek doğru sınıfı almanızı sağlar.

Bölüm 7: Nesne Havuzu

Nesne Havuzu Kalıbı, nesneleri yeniden örneklemek ve bittikten sonra yok etmek yerine, nesneleri tekrar tekrar kullanıma hazır tutar. Bellek tüketiminden ve hesaplama döngülerinden tasarruf etmenin harika bir yoludur.

Bölüm 8: Yineleyici

Yineleyici Desen, bir nesnenin başka bir sınıfın öğeleri arasında geçiş yapmasına izin veren bir tasarım modelidir. Bu, bir yineleyici belirtmenize ve yinelemeye izin veren temel yapıyı değiştirmeden birden fazla farklı veri kümesinin geçirilmesine izin verir.

Bölüm 9: Tembel Yükleme

Tembel Yükleme, bir nesnenin yüklenmesini, nesnenin çağrıldığı zamana kadar geciktiren bir tasarım modelidir. Magento ile bunu nesnelerle değil verilerle kullanırlar.

Bölüm 10: Servis Bulucu

Servis bulucu, kullanıcının işlemi bir soyutlama tabakası içinde kapsülleyerek hizmet almasını sağlayan bir tasarım modelidir. Bu, kullanıcının bu hizmetin çalışma zamanında ne olduğunu bilmeden uygun veya en iyi hizmeti almasını sağlar.

Bölüm 11: Modül

Modül Tasarım Deseni, bir programın işlevselliğinin bağımsız, değiştirilebilir modüllere gruplanmasını vurgulayan bir modüler programlama şeklidir.

Bölüm 12: Gözlemci

Gözlemci düzeni, bir uygulamanın dinlenmesi sırasında bir olay dinleyicisinin belirli bir noktada ayarlandığı yerdir. Uygulamanın diğer bileşenleri bu olay dinleyicisine “bağlanabilir” ve bu noktada kodlarını yürütebilir.

Bölüm 13: Aktif kayıt

Nesneler, veritabanı tablosundaki bir satırın temsilidir. Bu nesneler, tablonun yapısını temsil eden sütunları yansıtan özelliklere ve veritabanında bu özelliklerin değiştirilmesine izin veren yöntemlere sahip olmalıdır.

Desenin Magento tarafından kullanımı

Mage_Core_Model_Abstract sınıfından sonra miras alan sınıflar, sınıfın bağlı olduğu bir tabloda kayıtların yüklenmesine, değiştirilmesine, oluşturulmasına veya silinmesine izin veren load (), save () ve delete () yöntemlerine erişebilir. Ayrıca, Mage_Core_Model_Abstract sınıfı, belirli bir nesnenin özelliklerine sahip bir veritabanı tablosundaki sütunların otomatik olarak eşlenmesinden sorumlu olan gerçekten sihirli __set () ve __get () yöntemlerine erişmemizi sağlayan Varien_Object sınıfını devralır.

Toplama Magento 2

HİZMET SÖZLEŞMESİ TASARIM DESENİ

Magento, üçüncü taraf bir geliştiricinin çerçevesinin temel bölümlerini özelleştirmesine ve üzerine yazmasına izin veren uzantı tabanlı veya modüler bir sistemdir. Bu özelleştirmeler çeşitli sorunlara yol açabilir, örneğin, geliştiricilerin harici uzantılar tarafından yapılan özelleştirmeleri takip etmeleri mümkün olacaktır. Böylece bu Magento'nun üstesinden gelmek için hizmet sözleşmesi modeli ortaya çıkıyor. Hizmet sözleşmesi, son kullanıcı ve iş katmanı arasında katman görevi gören bir arabirim kümesidir. Böylece, doğrudan özelleştirme için iş mantığını son kullanıcıya göstermek yerine, hizmet sözleşmesi adı verilen bir katman devreye girer.

Hizmet sözleşmeleri Magento'nun modülerliğini arttırır. Magento'nun kolay yükseltilmesi için satıcılara yardımcı olur.Diğer harici ve Magento modüllerinin uyguladığı iyi tanımlanmış ve dayanıklı API'yi sağlayın. REST veya SOAP arabirimleri aracılığıyla iş mantığını ortaya çıkarmanın kolay bir yolunu sağlayın.

NESNE MÜDÜRÜ

Kendisi gibi çeşitli desen oluşur: - Bağımlılık enjeksiyon, Singleton, Fabrika, Soyut Fabrika, Kompozit, strateji, CQRS, Dekoratör ve daha birçok. Bunlar arasında en çok kullanılan kalıpları tartışacağız. Nesne yöneticisinin oynayacağı çok büyük bir rol var, Magento doğrudan kullanımını yasaklıyor. Nesne yöneticisi fabrika, singleton ve proxy kalıplarının uygulanmasından sorumludur. Sınıf yapıcılarında parametreyi otomatik olarak başlatır. Geleceği taşımadan önce enjekte edilebilir ve enjekte edilemeyen nesneleri anlayalım: -

ENJEKTE EDİLEN HEDEFLER

EventManager, CustomerAccountManagementService gibi kendi kimlikleri yoktur.

ENJEKTE OLMAYAN NESNELER

Müşteri, ürün vb. Bu kuruluşların genellikle kimlikleri ve durumları vardır, kimliklerine sahip oldukları için hangi kurumun tam örneğinde çalışmamız gerektiğini bilmek önemlidir.

BAĞIMLILIK ENJEKSİYONU

Magento 1'deki Mage'ye bir alternatiftir. Bağımlı nesneyi içsel olarak yaratmak yerine dış çevre yoluyla enjekte etme kavramıdır. Bu nedenle, gerektiğinde kaynak yaratmak yerine nesnemiz oluşturulurken kaynak isteyeceğiz. Bu, gelecekteki modifikasyona yardımcı olur ve gerekli nesneleri alay ederek test yapmak çok kolay hale gelir.

FABRİKA DESENİ VEYA FABRİKA SINIFLARI:

Magento 2 Factory sınıflarında nesne yöneticisi ile iş kodu arasında bir katman oluşturun. Fabrika sınıfları, otomatik olarak oluşturuldukları için açıkça tanımlanmaları gerekmez. Enjekte edilemeyen nesneler için fabrika sınıfları oluşturmalıyız.

PROXY KALIP

Proxy sınıfları başka bir sınıfın yerine çalışmak için kullanılır ve Magento 2'de bazen kaynağa aç sınıfların yerine kullanılır. Hangi proxy sınıflarının ne yaptığını anlamak için, proxy sınıflarının ortaya çıkmasına neden olan nedeni görelim. Magento'nun nesne oluşturmak için yapıcı enjeksiyonunu kullandığını bildiğimiz ve bir nesneyi başlattığımızda, yapıcısındaki tüm sınıflar da bir kurucu aracılığıyla bir örnekleme zincirine yol açacak, bu gerçekten süreci yavaşlatabilir ve bir uygulamanın performansını etkileyebilir , böylece zincir oluşturmayı durdurmak için Magento proxy sınıfları kullanır.

Aşağıdaki kodu görelim: -

Magento\Catalog\Model\Product\Attribute\Source\Status\Proxy

Magento\Catalog\Model\Product\Link\Proxy

Yukarıdaki kodda catalogProductStatus ve productLink için proxy sınıfları kullanıyoruz. Koştuğumuzda

 php bin/magento setup:di:compile 

Magento, di.xml kullanarak bazı sabit kurallarla anında proxy sınıfları oluşturur, böylece orijinal nesneyi bir proxy sınıfı nesnesiyle değiştirir. Şimdi nasıl çalıştığını anlamak için proxy sınıfımıza bakalım

Magento vekaletname oluşturulurken takip edilen bazı ortak sözleşmeler: -

  • Proxy sınıfının ad alanı orijinal ile aynı olacaktır (Magento \ Catalogue \ Model \ Product \ Attribute \ Source \ Status)
  • Proxy sınıfı yalnızca bir nesneyi genişletir, yani nesne yöneticisi
  • __Sleep, __wake gibi sihirli işlevlere sahip olan ve yalnızca belirli eylemlerde çağrılan ve __clone gibi işlevler orijinal sınıfın bir nesnesini oluşturacak ve nesneyi yalnızca gerektiğinde sağlayacaktır ( tembel yükleme tasarım desenini kullanarak ), böylece uygulamanın performansı https://devdocs.magento.com/guides/v2.0/extension-dev-guide/proxies.html

Eklentiler (Toplayıcılar)

genel bakış

Eklenti veya önleme, bir işlev çağrısını kesip bu işlev çağrısının öncesinde, sonrasında veya çevresinde kod çalıştırarak genel sınıf işlevlerinin davranışını değiştiren bir sınıftır. Bu, herhangi bir sınıf veya arabirim için orijinal, genel yöntemlerin davranışını değiştirmenize veya genişletmenize olanak tanır.

Genel bir yöntemin davranışını kesmek ve değiştirmek isteyen uzantılar, eklenti olarak adlandırılan bir Eklenti sınıfı oluşturabilir.

Bu müdahale yaklaşımı, aynı sınıf veya yöntemin davranışını değiştiren uzantılar arasındaki çakışmaları azaltır. Plugin sınıfı uygulamanız, sınıf işlevinin davranışını değiştirir, ancak sınıfın kendisini değiştirmez. Yapılandırılmış bir sıralama düzenine göre sıralı olarak çağrılabildikleri için, bu yakalayıcılar birbirleriyle çakışmaz.

Sınırlamalar

Eklentiler aşağıdakilerin hiçbiriyle kullanılamaz:

  • Son yöntemler
  • Final dersleri
  • Herkese açık olmayan yöntemler
  • Statik yöntemler
  • __construct
  • Sanal türler
  • Magento \ Framework \ Interception önyükleme yapılmadan önce başlatılan nesneler
  • ObjectManager tarafından somutlaştırılmayan nesneler (örn. Doğrudan yeni kullanarak). https://devdocs.magento.com/guides/v2.0/extension-dev-guide/plugins.html

ObjectManager

genel bakış

Magento uygulaması gibi büyük uygulamalar, örnekleme sırasında nesneler oluştururken kaynak kodunu önlemek için bir nesne yöneticisi kullanır.

Magento çerçevesinde, ObjectManagerInterface uygulaması bir nesne yöneticisinin görevlerini yerine getirir.

Sorumluluklar

Nesne yöneticisi aşağıdaki sorumluluklara sahiptir:

Fabrikalarda ve proxy'lerde nesne oluşturma. Talep edildiğinde bir sınıfın aynı paylaşılan örneğini döndürerek tekli kalıbı uygulama. Bir kurucu arabirimini istediğinde tercih edilen sınıfı somutlaştırarak bağımlılık yönetimi. Sınıf yapıcılarında parametreleri otomatik olarak başlatır. https://devdocs.magento.com/guides/v2.0/extension-dev-guide/object-manager.html

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.