Özel Bir Kurucu – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları
Özel Bir Kurucu
Bazen, yalnızca statik yöntemler ve statik alanların gruplandırılmasından oluşan bir sınıf yazmak isteyeceksiniz. Bu tür sınıflar kötü bir ün kazanmıştır, çünkü bazı insanlar onları nesne yönelimli dillerde yordamsal programlar yazmak için kötüye kullanır, ancak geçerli kullanımları vardır.
Java.lang.Math veya Java.util.Arrays biçiminde, ilkel değerler veya diziler üzerinde ilgili yöntemleri gruplamak veya Java.util tarzında belirli bir arabirimi uygulayan nesneler üzerindeki statik yöntemleri gruplamak için kullanılabilirler. .Koleksiyonlar. Sınıfı genişletmek yerine, yöntemleri son bir sınıf üzerinde gruplamak için de kullanılabilirler.
Bu tür fayda sınıfları somutlaştırılmak üzere tasarlanmamıştır: Bir örnek anlamsız olacaktır. Ancak açık kurucuların yokluğunda, derleyici genel, parametresiz bir varsayılan kurucu sağlar. Bir kullanıcı için bu kurucu diğerlerinden ayırt edilemez. Yayınlanmış API’lerde kasıtsız olarak örneklenebilen sınıflar görmek nadir değildir.
Bir sınıfı soyut yaparak değişmezliği zorlamaya çalışmak işe yaramaz. Sınıf alt sınıflanabilir ve alt sınıf somutlaştırılabilir. Ayrıca, kullanıcıyı sınıfın kalıtım için tasarlandığını düşünmeye yönlendirir.
Ancak, değişmezliği sağlamak için basit bir deyim vardır. Varsayılan bir kurucu, yalnızca bir sınıf hiçbir açık kurucu içermiyorsa oluşturulur, bu nedenle bir sınıf, tek bir açık özel kurucu dahil edilerek örneklenemez hale getirilebilir.
Açık kurucu özel olduğundan, sınıfın dışında erişilemez. Bu nedenle, yapıcının sınıfın içinden çağrılmadığı varsayılarak, sınıfın hiçbir zaman somutlaştırılmayacağı garanti edilir.
Bu deyim biraz mantığa aykırıdır, çünkü kurucu, çağrılamaması için açıkça sağlanır. Bu nedenle, yapıcının amacını açıklayan bir yorum eklemek akıllıca olacaktır.
Bir yan etki olarak, bu deyim sınıfın alt sınıflanmasını da engeller. Tüm oluşturucular, açık veya örtük olarak erişilebilir bir üst sınıf oluşturucuyu çağırmalıdır ve bir alt sınıfın çağrılacak erişilebilir bir oluşturucusu olmaz.
Yinelenen Nesneler Oluşturmak
Her ihtiyaç duyulduğunda işlevsel olarak eşdeğer yeni bir nesne oluşturmak yerine tek bir nesneyi yeniden kullanmak genellikle uygundur. Yeniden kullanım hem daha hızlı hem de daha şık olabilir. Bir nesne değişmezse her zaman yeniden kullanılabilir.
İfade, her yürütüldüğünde yeni bir String örneği oluşturur ve bu nesne oluşturma işlemlerinin hiçbiri gerekli değildir. String yapıcısının argümanının kendisi, yapıcı tarafından oluşturulan tüm nesnelerle işlevsel olarak aynı olan bir String örneğidir. Bu kullanım bir döngüde veya sık çağrılan bir yöntemde gerçekleşirse, gereksiz yere milyonlarca String örneği oluşturulabilir.
Bu sürüm, her çalıştırıldığında yeni bir tane oluşturmak yerine tek bir String örneği kullanır. Ayrıca, nesnenin aynı sanal makinede çalışan ve aynı dize değişmezini içeren başka herhangi bir kod tarafından yeniden kullanılacağı garanti edilir.
Her ikisini de sağlayan değişmez sınıflardaki yapıcılar yerine statik fabrika yöntemlerini (Öğe 1) kullanarak yinelenen nesneler oluşturmaktan genellikle kaçınabilirsiniz. Örneğin, Boolean.valueOf(String) statik fabrika yöntemi, Boolean(String) yapıcısına hemen hemen her zaman tercih edilir. Yapıcı, her çağrıldığında yeni bir nesne oluştururken, statik fabrika yönteminin bunu yapması hiçbir zaman gerekli değildir.
Değişmez nesneleri yeniden kullanmanın yanı sıra, değiştirilmeyeceğini bildiğiniz değişken nesneleri de yeniden kullanabilirsiniz. Değerleri hesaplandıktan sonra asla değiştirilmeyen değiştirilebilir nesneleri içeren, ne yapılmaması gerektiğine dair biraz daha incelikli ve çok daha yaygın bir örnektir.
Person sınıfının geliştirilmiş sürümü, Calendar, TimeZone ve Date örneklerini, isBabyBoomer her çağrıldığında oluşturmak yerine, başlatıldığında yalnızca bir kez oluşturur. Bu, yöntem sık sık çağrılırsa önemli performans kazanımları sağlar. Benim makinemde, orijinal sürüm bir milyon çağrı için 36.000 ms sürer, geliştirilmiş sürüm ise yüz kat daha hızlı olan 370 ms sürer.
Wix
World Wide Web
Hazır web sitesi
Web Nedir
Web sitesi Kurma
Google site kurma
World Wide Web ne Demek
Profesyonel Hazır web Sitesi
Sadece performans değil, aynı zamanda netlik de artar. BoomStart ve boomEnd’i yerel değişkenlerden nihai statik alanlara değiştirmek, bu tarihlerin sabitler olarak ele alındığını ve kodun daha anlaşılır olmasını sağlar. Tam açıklama açısından, Takvim örneklerinin oluşturulması özellikle pahalı olduğundan, bu tür bir optimizasyondan elde edilen tasarruflar her zaman bu kadar çarpıcı olmayacaktır.
isBabyBoomer yöntemi hiçbir zaman çağrılmazsa, Person sınıfının geliştirilmiş sürümü BOOM_START ve BOOM_END alanlarını gereksiz yere başlatır.
isBabyBoomer yöntemi ilk kez çağrıldığında bu alanları tembelce başlatarak gereksiz başlatmaları ortadan kaldırmak mümkün olabilir, ancak önerilmez. Tembel başlatmada sıklıkla olduğu gibi, uygulamayı karmaşıklaştırır ve gözle görülür bir performans artışıyla sonuçlanması pek olası değildir.
Bu maddedeki önceki tüm örneklerde, söz konusu nesnelerin değişmez oldukları için yeniden kullanılabildikleri açıktı. Daha az belirgin olduğu başka durumlar da vardır. Görünümler olarak da bilinen bağdaştırıcıların durumunu düşünün.
Bağdaştırıcı, bir destek nesnesine temsilci atanan ve destek nesnesine alternatif bir arabirim sağlayan bir nesnedir. Bir bağdaştırıcının, destek nesnesinin ötesinde bir durumu olmadığı için, belirli bir nesneye belirli bir bağdaştırıcının birden fazla örneğini oluşturmaya gerek yoktur.
Örneğin, Map arabiriminin keySet yöntemi, haritadaki tüm anahtarlardan oluşan Map nesnesinin bir Set görünümünü döndürür. Doğal olarak, keySet’e yapılan her çağrının yeni bir Set örneği oluşturması gerektiği, ancak belirli bir Map nesnesindeki keySet’e yapılan her çağrının aynı Set örneğini döndürebileceği görülüyor. Döndürülen Set örneği tipik olarak değiştirilebilir olsa da, döndürülen nesnelerin tümü işlevsel olarak aynıdır: Döndürülen bir nesne değiştiğinde, diğerleri de aynı şekilde aynı Map örneği tarafından desteklendiğinden, diğerleri de değişir.
Bu öğe, nesne oluşturmanın pahalı olduğu ve bundan kaçınılması gerektiği anlamına gelecek şekilde yanlış anlaşılmamalıdır. Aksine, yapıcıları çok az açık iş yapan küçük nesnelerin oluşturulması ve yeniden kazanılması, özellikle modern JVM uygulamalarında ucuzdur. Bir programın netliğini, basitliğini veya gücünü artırmak için ek nesneler oluşturmak genellikle iyi bir şeydir.
Tersine, kendi nesne havuzunuzu koruyarak nesne oluşturmaktan kaçınmak, havuzdaki nesneler çok ağır olmadığı sürece kötü bir fikirdir. Bir nesne havuzunu haklı çıkaran bir nesnenin prototipik bir örneği, bir veritabanı bağlantısıdır.
Bağlantı kurmanın maliyeti, bu nesneleri yeniden kullanmak mantıklı olacak kadar yüksektir. Ancak genel olarak konuşursak, kendi nesne havuzlarınızı korumak kodunuzu karıştırır, bellek ayak izini artırır ve performansa zarar verir. Modern JVM uygulamaları, hafif nesnelerdeki bu tür nesne havuzlarından kolayca daha iyi performans gösteren, yüksek düzeyde optimize edilmiş çöp toplayıcılara sahiptir.
Bu öğenin kontrpuanı, savunma amaçlı kopyalamada Madde 24’tür. Mevcut öğe şöyle diyor: “Mevcut bir nesneyi yeniden kullanmanız gerektiğinde yeni bir nesne yaratmayın”, Madde 32 ise “Yeni bir nesne oluşturmanız gerektiğinde mevcut bir nesneyi yeniden kullanmayın” diyor.
Savunma amaçlı kopyalama istendiğinde bir nesneyi yeniden kullanmanın cezası, gereksiz bir şekilde yinelenen bir nesne yaratmanın cezasından çok daha büyüktür. Gerektiğinde savunma amaçlı kopyalar oluşturmamak, sinsi hatalara ve güvenlik açıklarına yol açabilir; nesneler yaratmak gereksiz yere sadece stili ve performansı etkiler.
Web sitelerinizi, arama motorlarında en yukarı getirmek adına sizlere 3 adet paket öneriyoruz. Bu paketler sayesinde web siteleriniz aramalarda 1 yıl içerisinde en yukarıya tırmanacaktır.
1) Backlink Paketi 50 $ (Yıllık Ücret)
2) Hızlandırma Paketi 300 $ (Yıllık Ücret)
3) Kelime Yönlendirme Paketi 150 $ (Aylık Ücret)