4.1 Oluşturucu
Oluşturucu , bileşik bir nesne yaratmanın bir yolunu sağlayan üretken bir tasarım modelidir.
Karmaşık bir nesnenin yapımını temsilinden ayırır, böylece aynı inşa süreci farklı temsillerle sonuçlanabilir.
![Oluşturucu](https://cdn.codegym.cc/images/article/73f76c69-6b2a-4034-9207-93871bb16fae/800.jpeg)
Güçlü:
- ürünün dahili temsilini değiştirmenize izin verir;
- inşaat ve sunumu uygulayan kodu izole eder;
- tasarım süreci üzerinde daha hassas kontrol sağlar.
Zayıf taraflar:
- karmaşık bir nesne yaratma algoritması, nesnenin hangi parçalardan oluştuğuna ve bunların nasıl bir araya geldiğine bağlı olmamalıdır;
- inşa süreci, inşa edilen nesnenin farklı temsillerini sağlamalıdır.
İyi bir örnek, HttpRequest sınıfının örneklerini oluşturmak ve bunların geçerli olmasını sağlamak için kullanılabilen HttpRequest.Builder alt sınıfına sahip HttpRequest sınıfıdır.
4.2 Geç başlatma
Tembel başlatma, sonucu kullanılmadan hemen önce bazı yoğun kaynak gerektiren işlemlerin (nesne oluşturma, değer hesaplama) gerçekleştirildiği bir programlama tekniğidir.
Bu nedenle, başlatma önceden değil, "talep üzerine" gerçekleştirilir. Benzer bir fikir, çeşitli alanlarda uygulama bulmaktadır: örneğin, anında derleme ve Tam Zamanında lojistik konsepti.
![Tembel başlatma](https://cdn.codegym.cc/images/article/fa045df5-58b9-4433-bc35-45548f452406/800.jpeg)
Tembel başlatmanın özel bir durumu - bir nesneye erişim anında yaratılması - üretken tasarım modellerinden biridir. Tipik olarak Factory Method, Loner ve Proxy gibi modellerle birlikte kullanılır.
Güçlü:
- Başlatma yalnızca gerçekten ihtiyaç duyulduğunda gerçekleştirilir;
- Uygulamanın ilk başlatılması hızlandırılır: ertelenebilecek her şey ertelenir.
Zayıf taraflar:
- Nesnelerin başlatılma sırasını açıkça ayarlamak mümkün değildir;
- Nesneye ilk erişimde, paralel olarak başka bir kaynak yoğun işlem gerçekleştirildiğinde kritik olabilen bir gecikme vardır. Bu nedenle, çok iş parçacıklı yazılım sistemlerinde tembel başlatma kullanmanın uygunluğunu dikkatle değerlendirmek gerekir.
Web.xml yazarken orada sunucu uygulamalarının başlangıç sırasını nasıl belirtebileceğinizi hatırlıyor musunuz? Bu tam olarak tembel yüklemenin sonucudur. Tomcat, ilk kez erişildiklerinde servlet nesneleri oluşturacaktır.
4.3 Nesne havuzu
Nesne havuzu , başlatılmış ve kullanıma hazır nesnelerden oluşan bir ana tasarım modelidir. Sistem bir nesneye ihtiyaç duyduğunda yaratılmaz, havuzdan alınır. Bir nesne artık gerekli olmadığında yok edilmez, havuza geri döndürülür.
![nesne havuzu](https://cdn.codegym.cc/images/article/780f7d14-5ad3-42e2-bbfe-409cef49851e/512.jpeg)
Nesne havuzu, işin başında bir nesne oluşturup sonunda onu yok etmenin pahalı olduğu durumlarda performansı artırmak için kullanılır. Performans iyileştirmesi, özellikle nesneler sık sık oluşturulduğunda ve yok edildiğinde fark edilir, ancak aynı anda bunlardan yalnızca az sayıda bulunur.
Bir nesne havuzu, bir nesne ağ soketleri gibi bellek dışındaki kaynaklara sahip olduğunda kullanışlıdır. Veya nesnelerin toplanması bilgisayarın belleğinin önemli bir bölümünü kaplıyorsa ve çok fazla "çöp" oluşuyorsa.
Hatırlayacağınız gibi, Tomcat her isteği ayrı bir iş parçacığında yürütür. Ancak thread'ler her seferinde yeniden yaratılmaz, thread havuzunda saklanır. Bu, isteklerin daha hızlı yürütülmesini sağlar: Bir iş parçacığına ihtiyaç duyulduğunda, havuzdan alınır. Bu arada soru şu: Çalışan ipi havuza koyup havuzdan nasıl çıkarırsınız?