Magento 2'de kaç tasarım deseni var?
Magento 2'de kaç tasarım deseni var?
Yanıtlar:
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: -
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:
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