Aracılığıyla paylaş


Oluşturucu Tasarımı

Not

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 ilkel veya sabit listeleridir. Bu basit oluşturucular çerçevenin kullanılabilirliğini artırır.

✔️ İstenen işlemin semantiği doğrudan yeni bir örneğin yapısına eşlenmiyorsa veya oluşturucu tasarım yönergelerine uyulduğunda, 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 özelliği ayarlamak için kullanılıyorsa, oluşturucu parametreleri için aynı adı ve bir özelliği kullanın.

Bu tür parametrelerle özellikler arasındaki tek fark büyük/küçük harf 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 hataya neden olan değişikliklere neden olur.

❌ 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 olarak çalıştırılmasa bile en türetilmiş geçersiz kılmanın çağrılması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 özel durumlar 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 kullanmak yerine satır içinde başlatmayı göz önünde bulundurun.

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

Pearson Education, Inc. in Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraryes, 2nd Edition by Krzysztof Cwalina and Brad Abrams izniyle yeniden yazdırıldı ve 22 Ekim 2008'de Addison-Wesley Professional tarafından Microsoft Windows Geliştirme Serisi'nin bir parçası olarak yayımlandı.

Ayrıca bkz.