Neden yapıcıdaki farklı oluşturma adımlarını uygulayamıyoruz? yapı adımları argüman alırsa, neden yapıcı için argüman olarak sağlanamaz ve nesneyi oluşturmak için kurucu içinde kullanılabilir. AFAIK, Builder modelinde, istemcinin oluşturulacağı belirli bir nesne; Öyleyse, sınıfın yaratılan nesnesinde argümanlar içeren bir Oluşturucu yerine bir oluşturucu kullanmanın avantajı nedir?Builder kalıbı, Class nesnesindeki argümanlarla neden bir Oluşturucudan daha iyidir?
cevap
Oh! Anladım. Vikipedi örneğine bakıyordum ve Builder'ın neden yardımcı olduğunu anladım. İstemci, çok karmaşık olduğu için kurucuya hangi argümanların geçeceğini bilmediği ve bu nedenle kurucuyu doğrudan arayabileceği ve nesneyi alamayacağı durumlarda yardımcı olur. Sonuç olarak, kuruculara hangi argümanların geçeceğini bilen ve böylece nesneyi oluşturan Beton Üreticileri'nden yardım ister.
Temel olarak, eğer istemci çoğunlukla argümanlarını nesnesi oluşturulmuş olan Sınıfın yapıcısına iletecekse, o zaman Builder bu işe yaramaz. Prototipi kullanmak belki daha iyidir. Öte yandan, eğer sınıftan oluşturulacak argümanları bu sınıfa aktararak (veya setçileri çağırarak) sınıftan oluşturulabilecek küçük bir sonlu küme nesnesi varsa ve bunlar sıklıkla kullanılanlarsa, o zaman Oluşturucu sınıfındaki şeyleri geçerek bu argümanı kapsüllemek ve bunları sizin için nesneleri oluşturmak için kullanın.
- 1. Neden "boost :: any" void * `den daha iyidir?
- 2. Neden Sass iyidir?
- 3. C++ Builder programım neden Delphi programımdan çok daha küçük?
- 4. SetInterval neden rasgele argümanlarla bir işlevi çağırıyor?
- 5. StringBuilder and Builder Pattern
- 6. Bir NSTextField metnini arayüz oluşturucudan vurgulayabilir miyim?
- 7. Benzersiz kimlik değerlerini depolamak için neden bir UUID kullanmak daha iyidir?
- 8. hata: Varsayılan argümanlarla polimorfik ifade
- 9. F # fonksiyonlarında parametrelerin tanımlanması, tupllerin kullanılması daha mı iyidir?
- 10. Hangisi daha iyidir: tablo başına tek global dizi vs.
- 11. Java için Feed Okuyucu kitaplıkları hangisi daha iyidir?
- 12. Hangi işletim sistemi geliştirme için daha iyidir: Debian veya Ubuntu?
- 13. PHP - require_once ('filename.php') veya require_once 'filename.php' kullanmak daha mı iyidir?
- 14. Dize enterpolasyonu ve string.format'tan hangisi performans açısından daha iyidir?
- 15. Ruby Builder :: XmlMarkup neden xml'ye etiket ekliyor?
- 16. Neden OS X'de [@ "" class]! = NSClassFromString (NSStringFromClass ([@ "" class]))? iOS'ta
- 17. Fabrika kalıbı, bellek sızıntısı
- 18. Postgresql db'yi optimize etmek için hangi yol daha iyidir?
- 19. Sorgu Nesne Kalıbı (Tasarım Kalıbı)
- 20. Dağıtım dizisini Dağıtım-Sayma sıralama algoritmasında sağdan sola doğru işlemek neden daha iyidir?
- 21. AngularJS, class = class = bir değişken atamak için class =
- 22. Komut Kalıbı
- 23. C++ ziyaretçi kalıbı: Neden her bir türevi ziyaret edildi Accept()?
- 24. neden daha hızlı döngü
- 25. Bir Range nesnesindeki etiketin className değerini alın
- 26. Cron zamanlayıcı "devre dışı kalıbı kalıbı"
- 27. ng-class = "ng-app" neden AngularJS'yi kırdı?
- 28. Pip '--no-cache-dir' ne için iyidir?
- 29. MVVM Kalıbı
- 30. Miras kalıbı olmadan C# de dekoratör kalıbı. Bu doğru mu?