Yeni Başlayanlar İçin Tasarım Modelleri
Yayınlanan: 2016-01-13Halihazırda ürünler veya yazılım uygulamaları için programlar yazdıysanız, büyük / küçük, büyük olasılıkla çok sayıda Tasarım Modeli kullanmışsınızdır… ancak bunlar en çok kullanılan / standart tasarım kalıplarından biri olmayabilir.
Ama evet, bir tasarım kalıbını uygulamak ile bir tasarım kalıbını “kullanmak” arasında bariz bir fark vardır… her iki durumda da, tasarım kalıplarıyla çalışan kişi onu anlar veya kolayca anlar.
Mesele şu ki, Tasarım kalıpları programcılar için yeni değil.
Aşağıdaki bu yazıda tasarım kalıplarını temelleri ile açıklamaya çalışıyorum ve başka bir yazıda çeşitli kalıpların, örneklerin vb. detaylarını inceleyeceğiz.
Tasarım Modeli Nedir?
Başlamak…
Tasarım kalıplarını anlamaya başlamanın en iyi yolunun, günlük hayatımızda bilerek / bilmeyerek takip ettiğimiz teknik olmayan kalıpları anlamak olduğunu düşünüyorum.
Örneğin, bir iş ilanı için gönderilen çok sayıda Özgeçmişi ele alalım. Herkesin özgeçmişi aynı görünmüyor… hepsi aynı şeyi yapma eğiliminde olsalar da, yani okuyucuya nelerde yetenekli olduklarını veya işe nasıl uygun olabileceğini anlatıyor.
İşlere özgeçmiş gönderenlerin çoğu, biçimlendirilmiş bir Word belgesinde belirli bir dizi bilgi içeren bir özgeçmiş göndermeleri gerektiğini bilir.
Bu… herkesin içinde ifade edilen belirli bir dizi bilgi içeren bir özgeçmiş sunduğu bir kalıptır.
Eğer… gibi hissediyorsanız, buna Modeller yerine Şablonlar deyin. Tasarım Şablonları.
Gerçek hayatta kalıp olan bu tür birçok şey vardır. Bazı insanlar aşağıdaki örnekleri sever:
Dünyanın her yerindeki tüm şefler aynı şekilde Pizza veya Patates Kızartması pişiriyor. Her ne kadar üstte olabilir / farklı şekilde tatlandırabilirler. Bu bir kalıptır.
Her otomobilin tasarımı, temel bir tasarım modelini, dört tekerleği, direksiyon simidi, gaz-kırma-debriyaj gibi çekirdek tahrik sistemini takip eder.
Tekrar tekrar inşa edilen / üretilen her şey, tasarımında kaçınılmaz olarak bir modeli izleyecektir… Arabalar, Pizza, ATM makineleri, her neyse… Diş Fırçası bile.
Yazılımdaki bazı mantık/mekanizma/tekniği kodlamanın neredeyse standart yolu haline gelen tasarımlar, bu nedenle Yazılım Tasarım Kalıpları olarak bilinir - ve dolayısıyla - incelenir.
Tasarım Modeli Neden Önemlidir?
Temel olarak iki nedenden dolayı:
- Bir standarda bağlı kalmak
- Gelişimi hızlandırmak için
ayrıntılı olarak anlatacağım.
İlk olarak, standart bir kalıba bağlı kalmanın neden ilginç olduğunu anlıyoruz.
Daha önce tartıştığımız Özgeçmiş örneğinin listesini ele alalım.
İş başvurularını uygun biçimlendirme olmadan, e-posta ekleri vb. olmadan e-posta metniyle gönderen bir veya iki başvuru sahibi olabilir, .. bu bir veya iki başvuru sahibi örüntüyü takip etmiyor .. ve sonuçlanma olasılığı YOKTUR. iş ile…. Neden? Çünkü onlar, iş için özgeçmişleri kısa listeye alan insanlar tarafından sevilmeyebilecek, iyi kurulmuş bir kalıptan sapıyorlar.
Kalıpların dışına çıkıp “cool” olan yok mu? Bu İnovasyon değil mi?
Evet, çok farklı sunulan bir özgeçmişin diğerlerinden farklı olduğu için işi aldığı zamanlar vardır. Genellikle, çalışmalarının bir CD filmini derleyip sundukları ya da çalışmalarını açıklayan bir animasyon karakteri yaptıkları, bloglarına koydukları ve bunun gibi şeyler yaptıkları için birincil işler bulan web tasarımcılarını duymuşumdur.
Ama.. bu deneydir ( İnovasyon başarılı deneylerden gelir ).
Çoğu zaman yazılım geliştirmede, zaman çizelgesi baskısı, beklentiler vb. nedeniyle deney yapmayı göze alamazsınız, ancak evet bazen, bazı ilginç projeler bazı deneylere izin verir.
Yazılımda, Banka Mevduatı gibi temel şeyleri yapamayız… 101 şekilde… bir Banka Mevduatını işlemenin sadece birkaç yolu olacaktır.. bu nedenle yerleşik ve test edilmiş bir Modeli takip etmek mantıklıdır.
Ayrıca, çoğu tasarım deseninin varyasyonları vardır… varyasyonların bazıları o kadar popülerdir ki, varyasyonlar aynı zamanda modelin yeni bir standart türü olacaktır.
Bugünlerde yazılım projelerinin (en azından dolaylı olarak) piyasada benzer bir ürün / yazılımın halihazırda kurulmuş bir tasarımını takip etmesi bekleniyor.
Standart bir kodlama stiline veya tasarım modeline bağlı kalmanın yazılım geliştirmeye yardımcı olduğu yer burasıdır… geliştirmeyi hızlandırır, test edilmemiş yeni bir uygulama hakkında endişelenmenin yükünü ortadan kaldırır, vb.
Sabitleme geliştirme süresi
Standart bir tasarım modelini takip etmek ayrıca Yazılım mimarları, Modül liderleri, Takım liderleri, Geliştiriciler vb. ağaç / hiyerarşi aracılığıyla bir şeyin “Nasıl” geliştirilmesi gerektiği ve sadece “Ne” olması gerektiği konusunda kolayca iletişim kurma avantajına sahiptir. gelişmiş.
Bazen Test Ekiplerine bile yardımcı olur, çünkü testçiler belirli bir tasarım modelini izleyen kodun muhtemelen belirli bir süre içinde bir dizi Test aracıyla belirli bir şekilde test edilebileceğini deneyimleyerek bilirlerdi ve bu tür bilinen tasarımlarda bazı kusurlar olmayabilir. veya bazı 'bilinen' kusurları var.
Tasarım Modellerini kullanmak kişisel bir dokunuş katmıyor mu?
Hayır. İlk olarak, bir tasarım modelini takip ettiğinizi ve başka hiçbir şey olmadığını söylemiyoruz. Çoğu proje uygulaması, diğer projelerle yalnızca temel gereksinimleri paylaşır ve büyük olasılıkla sapmalar olacaktır. Bu sapmaları oluşturmak, bir uygulamada kullanılan standart kalıpların esnetilmesini ve esnetilmesini gerektirecektir.

Bu, pizzayı standart şekilde yapmak, sonra onu tatlandırmak / tam turta pizza, ya da kesilmiş turta gibi farklı gereksinimlere sunmak gibidir.
Tasarım kalıplarının önemini anlamak için bir şey çok **önemlidir :
Tasarım Kalıpları, belirli bir şirketin veya programlama dilinin bize zorladığı herhangi bir teknoloji veya çerçeve değildir. Bunun anlamı, açık bir konsept gibidir.. onu almakta, kullanmakta, ihtiyaçlarınıza göre değiştirmekte ve daha da önemlisi... onu kendinize ait hissetmekte özgürsünüz.
Tüm standart veya popüler tasarım desenleri, aslında, oldukça yoğun bir şekilde genişletilebilir.. ilk olarak, yalnızca birçok kişi kullandığı için popüler hale geldiler.. ve birçok kişi, yalnızca gereksinimlerine göre esnek oldukları için kullanıyor.
Veya standart bir tasarım modelinin New Jersey'de bir şirket için ve ayrıca Bangalore'de farklı bir şirket ve farklı bir proje türü için bir projeye nasıl uyacağını düşünüyorsunuz?
Bu bizi “ Çoğu tasarım modeli Geneldir ”e getiriyor… yani her zaman aynı tür yazılımları oluşturmak için kullanılmazlar. Yaygın tartışmalarda kullanılan “Bankacılık yazılımı tasarım kalıbı” veya “sosyal ağ yazılımı tasarım kalıbı” gibi şeyleri duymayabilirsiniz… sadece “Tasarım Kalıpları”.
Tasarım Kalıplarından Kimler Rahatsız Edilmelidir?
- Tıpkı iyi bir bina Mimarının yaşamı boyunca sayısız bina ve şeklin Mimarisini ve Tasarımını inceleyerek bina tasarlama becerilerini geliştirmesi gibi, bir Yazılım Mimarı da dünya genelinde farklı Yazılım / Teknoloji sistemlerinin nasıl tasarlandığını veya nasıl tasarlandığını incelemeli ve görselleştirmelidir. Mimari.
- Ve tıpkı bir binanın inşaat işçilerinin, ya kendi deneyimlerinden ya da Binanın Mimarından anlayarak, bir bina tasarımını uygulamanın farklı yollarından haberdar olmaları gerektiği gibi.
Yazılım geliştiriciler/programcılar, temel yazılım tasarım kalıplarını ve uygulama kodlarını ya kendilerinden ya da ekibe belirli bir Modeli izleyerek geliştirme talimatı veren Yazılım Mimarından anlamalıdır.
Temel Kod Kalıpları
Bu makalenin giriş satırlarında, herhangi bir programcının tasarım kalıplarını kullanacağını söylemiştim. İşte bir kalıbı takip eden bazı çok temel kod örnekleri.
- Aşağıda temel bir Engelleme Filtresi tasarım modeli verilmiştir.
- Kopya Kodu Gizle
- [kod]
geçiş (koşul){
durum Değeri1:
durum Değeri2:
varsayılan:
}
[/kod] - Olay tetikleyicileri, Olay İşleyicileri.. temel Konu-Gözlemci tasarım modeli altında gelir. Her kalıp standartlarını, popüler varyasyonları örneklerle tartışacağız.. yakında.
- C#'daki Arraylist gibi bir tür koleksiyon kullandıysanız ve diziyi yinelediyseniz, temel bir Yineleyici tasarım deseni kullanmışsınızdır.
- Aşağıdaki kod, temel bir İstisna işleme/ Sorumluluk Zinciri modelinin bir örneğidir.
- Kopya Kodu Gizle
- [kod]
denemek{
}yakala(İstisna ex){
}
nihayet{
}
[/kod]
Tasarım Desenlerinin Farklı Alanları
Yazılımda Tasarım Kalıpları dışında farklı terminolojiler vardır. bunlardan bazıları genellikle şimdiye kadar tartıştığımız Tasarım kalıpları ile ilgilidir.. ve bazıları tamamen ilgisizdir.
Şimdiye kadar yukarıda tartıştığımız şeye bazen “ Uygulama Tasarım Modelleri ” denir.
Mimari Kalıplar, Çerçeve Kalıpları, Dil Kalıpları (çoğunlukla Dil Yapıları olarak adlandırılır) gibi başkaları da vardır.
Bunlar farklı düzeylerde oluşturulmuş kalıplardır… gibi Dil kalıpları , C# / Java gibi programlama dillerinin bir parçası olarak uygulanan kalıplardır, dilin özellikleri/yapıları olarak.. bunlardan bazılarını daha önce görmüştük.
Yukarıdaki tüm özne-gözlemci, engelleme filtresi vb. örnekleri, C'den sonra gelen tüm popüler yüksek seviyeli programlama dillerinde dil yapıları olarak emilir.
Mimari kalıplar , genellikle tam uygulamayı oluşturan modülleri veya katmanları veya katmanları yerleştirme veya birbirine bağlamanın farklı yöntemlerine atıfta bulunan standart yazılım mimarisi modelleridir.
Bu, kodlama/programlama anlamında tasarım kalıplarıyla tamamen ilgisizdir, ancak bu makalede tartışıldığı gibi Why's / What's ile aynı cevapları paylaşırlar.
Çerçeve kalıpları , tasarım kalıpları tartışmamızla da ilgisizdir. .NET gibi çerçeveler, çerçevenin yerleşik yöntemleri veya nesneleri aracılığıyla kolayca Günlük hataları veya İzleme kodu yürütme yolları için özel araçlar uyguladığında, bu tür mekanizmalara Çerçeve kalıpları denir.
.NET Framework'teki bazı örnekler arasında stackTrace özelliği, sınıf/yöntem tanımlarının üstünde [] köşeli parantezler bulunan sınıf niteliği özelliği vb. bulunur. Bu tür özellikleri kullanırken, Framework' yerleşik kalıplarıyla kodluyoruz.
Umarım bu makale Tasarım Modellerine ve ilgili terminolojilere Genel Bakış sağlamaya yardımcı olur.
Buraya kadar sadece standartların ne olduğunu ve ne kadar önemli olduklarını tartıştık.. ama standart kalıpların kendisinin ne olduğunu tartışmadık.
Lisans
Bu makale, ilgili tüm kaynak kodlar ve dosyalarla birlikte The Code Project Open License (CPOL) kapsamında lisanslanmıştır.