Aracılığıyla paylaş


Oluşturucu Tasarımı

Uyarı

Bu içerik, Çerçeve Tasarım Yönergeleri: Kurallar, Deyimler ve Yeniden Kullanılabilir .NET Kitaplıkları için Desenler, 2. Sürüm'den Pearson Education, Inc.'in izniyle yeniden yazdırılır. Bu baskı 2008'de yayımlandı ve kitap o zamandan beri üçüncü baskıda tamamen revize edilmiştir. Bu sayfadaki bazı bilgiler güncel olmayabilir.

İki tür oluşturucu vardır: tür oluşturucuları ve örnek oluşturucuları.

Tür oluşturucuları statiktir ve tür kullanılmadan önce CLR tarafından çalıştırılır. Örnek oluşturucuları, bir tür örneği oluşturulduğunda çalışır.

Tür oluşturucuları herhangi bir parametre alamaz. Örnek oluşturucuları bunu yapabilir. Parametre almayan örnek oluşturucuları genellikle parametresiz oluşturucular olarak adlandırılır.

Oluşturucular, bir türün örneklerini oluşturmanın en doğal yoludur. Geliştiricilerin çoğu örnek oluşturmanın alternatif yollarını (fabrika yöntemleri gibi) dikkate almadan önce bir oluşturucuyu arar ve kullanmayı dener.

✔️ Basit, ideal olarak varsayılan oluşturucular sağlamayı GÖZ ÖNÜNDE BULUNDURUN.

Basit bir oluşturucunun çok az sayıda parametresi vardır ve tüm parametreler primitif veya numaralandırmalardır. Bu basit oluşturucular çerçevenin kullanılabilirliğini artırır.

✔️ İstenen işlemin semantik yapısı doğrudan yeni bir örneğin yapımına uymuyorsa veya oluşturucu tasarım yönergelerini takip etmek doğal gelmiyorsa, oluşturucu yerine statik fabrika yöntemi kullanmayı göz önünde bulundurun.

✔️ DO, ana özellikleri ayarlamak için kısayollar olarak oluşturucu parametrelerini kullanır.

Semantikte boş oluşturucuyu ve ardından bazı özellik kümelerini kullanma ile birden çok bağımsız değişken içeren bir oluşturucu kullanma arasında fark olmamalıdır.

✔️ DO, oluşturucu parametreleri yalnızca bir özelliği ayarlamak için kullanılıyorsa, bu özellik için oluşturucu parametreleriyle aynı adı kullanın.

Bu tür parametrelerle özellikler arasındaki tek fark harf büyüklüğü/yazı biçimi olmalıdır.

✔️ Oluşturucuda çok az iş yapın.

Oluşturucular, oluşturucu parametrelerini yakalamak dışında çok fazla iş yapmamalıdır. Diğer işlemlerin maliyeti gerekene kadar geciktirilmelidir.

✔️ DO, uygunsa örnek oluşturucularından özel durumlar oluşturur.

✔️ DO, böyle bir oluşturucu gerekliyse sınıflarda genel parametresiz oluşturucuyu açıkça bildirir.

Bir tür üzerinde herhangi bir oluşturucuyu açıkça bildirmezseniz, birçok dil (C# gibi) otomatik olarak bir ortak parametresiz oluşturucu ekler. (Soyut sınıflar korumalı bir oluşturucu alır.)

Bir sınıfa parametreli oluşturucu eklemek, derleyicinin parametresiz oluşturucuyu eklemesini engeller. Bu genellikle yanlışlıkla yapılmış değişikliklere yol açar.

❌ Yapılarda parametresiz oluşturucuları açıkça tanımlamaKTAN KAÇıNıN.

Bu, parametresiz oluşturucu tanımlanmamışsa dizideki her yuvada çalıştırılması gerekmediğinden dizi oluşturmayı hızlandırır. C# dahil olmak üzere birçok derleyicinin bu nedenle yapıların parametresiz oluşturuculara sahip olması için izin vermediğini unutmayın.

❌ Oluşturucu içindeki bir nesnede sanal üyeleri çağırmaKTAN KAÇıNıN.

Bir sanal üyenin çağrılması, en türetilmiş türün oluşturucusu henüz tam anlamıyla çalıştırılmamış olsa bile en türetilmiş fonksiyonun geçersiz kılınmasına neden olur.

Tür Oluşturucu Yönergeleri

✔️ DO statik oluşturucuları özel hale getirin.

Bir türü başlatmak için sınıf oluşturucu olarak da adlandırılan statik oluşturucu kullanılır. CLR, türün ilk örneği oluşturulmadan veya bu türdeki statik üyeler çağrılmadan önce statik oluşturucuyu çağırır. Kullanıcının statik oluşturucunun ne zaman çağrıldığı üzerinde hiçbir denetimi yoktur. Statik oluşturucu özel değilse, CLR dışında bir kod tarafından çağrılabilir. Oluşturucuda gerçekleştirilen işlemlere bağlı olarak, bu beklenmeyen davranışa neden olabilir. C# derleyicisi statik oluşturucuları özel olmaya zorlar.

❌ Statik oluşturuculardan istisnalar ATMAYIN.

Bir tür oluşturucudan özel durum oluşturulursa, geçerli uygulama etki alanında bu tür kullanılamaz.

✔️ Çalışma zamanı, açıkça tanımlanmış statik oluşturucuya sahip olmayan türlerin performansını iyileştirebildiğinden, statik alanları açıkça tanımlanmış statik oluşturucular kullanmak yerine doğrudan başlatmayı göz önünde bulundurun.

Porsiyonlar © 2005, 2009 Microsoft Corporation. Tüm hakları saklıdır.

Pearson Education, Inc. tarafından Krzysztof Cwalina ve Brad Abrams'ın Yeniden Kullanılabilir .NET Kütüphaneleri için Çerçeve Tasarım Yönergeleri: Sözleşmeler, Deyimler ve Kalıplar, 2. Baskı eserinden izniyle yeniden basılmıştır. Addison-Wesley Professional tarafından Microsoft Windows Geliştirme Serisi kapsamında 22 Ekim 2008'de yayımlanmıştır.

Ayrıca bakınız