Oluşturma Modeli: Oluşturucu
Bu makale, iki işlemi birleştirmeden karmaşık nesnelerin nasıl temsil edilebileceğini ve oluşturulabileceğini tartışmaktadır.
Bu ne?
Oluşturucu deseni, nesneleri oluşturmak için gereken kod miktarını azaltır. Bu nedenle, oluşturmanız gereken karmaşık bir şey varsa, oluşturucu modelini kullanarak bu işlemi basitleştirebilirsiniz. Bileşik veya toplu bir nesne, genellikle bir inşaatçının yaptığı şeydir.
Oluşturucu modeli, temsilini yapısından ayırarak karmaşık bir nesne oluşturma sürecini kapsar. Bu, aynı yapım süreci ile farklı modeller oluşturmamızı sağlar. Java'da bu, aynı inşa sürecini paylaşabilecek diğer sınıflardan nesneler yaratmak anlamına gelir.
Sınıf diyagramı
Sınıf diyagramı aşağıdaki varlıkları içerir:
- Oluşturucu
- beton ustası
- Müdür
- Ürün
Uçak örneğimizden devam ederek, bir uçağın yapımının üç adımdan oluştuğunu varsayalım:
- kokpitin yapılışı
- sonra motor
- ve son olarak, kanatlar
Şimdi koda bir göz atalım. İlk olarak, sınıfımızın soyut arayüzü ile başlayacağız AircraftBuilder. Daha sonra, her inşaatçı, inşa etmekten sorumlu oldukları nihai ürün varyantına o parçayı dahil edip etmeyeceklerine bağlı olarak, beton inşaatçılar tarafından geçersiz kılınabilecek yöntemler içerir.
Şimdi, biri F-16 ve diğeri Boeing-747 için olmak üzere iki beton yapıcı uygulayacağız.
Basit olması için, inşaatçıların iskeletini sağladık ve her yöntemin ayrı ayrı uygulanmasını atladık. F-16 kokpitinde banyo olmadığı için yöntemi F16Buildergeçersiz kılmıyor . buildBathroomsBoeing 747'nin yaratıcısı, banyo yöntemini geçersiz kılar çünkü Boeing 747'de yolcular için banyolar bulunur.
Sınıf, Directorfarklı parçaların yapıldığı belirli sıra gibi bir hava taşıtı oluşturmak için gereken süreci veya algoritmayı kaydetmekten sorumludur. Yönetmen, uçağın üreticisi gibidir. Bitmiş ürün inşaatçılar tarafından kendisine iade edilir.
Seçtiğimiz inşaatçıya geçebileceğimize ve uçak ürününü (temsili) F-16 veya Boeing-747 olacak şekilde değiştirebileceğimize dikkat edin. Bizim senaryomuzda, inşaatçılar farklı süper tipler getirir, ancak çok benzer olmayan ürünler iade ederlerse durum böyle olmayabilir.
İstemci kalıbı şu şekilde uygulayacaktır:
Arayüz AircraftBuilder, bir uçağın nasıl inşa edildiğini gizler. F16Engineİstemci , F16CockpitBoeing-747'leri oluşturmak için kullanılan sınıflardan habersizdir .
Yönetmeni Atlamak
Builder modeli genellikle yönetmen olmadan kullanılır. Bunun yerine müşteri, oluşturucuyu doğrudan başlatabilir ve kendisi için bir ürün elde etmek için gerekli yöntemleri çağırabilir. Bu, teleskop yapıcılar için yaygın bir panzehirdir. Örneğin, çok fazla özelliğe sahip bir sınıf düşünün, ancak bazıları isteğe bağlı olarak ayarlanabilir. Böyle bir durumda, oluşturucuyu yalnızca gerekli nitelikleri ayarlamak ve bir ürün oluşturmak için çağırabilirsiniz.
Diğer Örnekler
- Java API,
StringBuilderGoF oluşturucu modeline tam olarak uymayan bir sınıfı ortaya çıkarır, ancak yine de buna bir örnek olarak düşünülebilir. StringBuilder sınıfı, orijinal dizeden karakterleri ekleyerek yeni bir dize döndüren bir ekleme yöntemi sağlar. - Başka bir varsayımsal örnek, pdf veya HTML türünde belgeler oluşturmak olabilir.
DocumentBuilderYukarıdaki yöntem, bir istemci veya sunucu kodunda görünebilir ve farklı bir yönteme geçirilerek farklı belge türleri oluşturulabilir . HtmlDocumentBuilderA ve a'yı PdfDocumentBuildersoyut sınıftan türetebiliriz DocumentBuilder.
Uyarılar
Kurucu ve soyut fabrika modellerinin benzer hedefleri vardır ancak onlara farklı şekilde yaklaşırlar. Örneğin, builder pattern nesneleri adım adım oluştururken, soyut fabrika tek seferde bir nesne döndürür.

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































