Java Singleton (Örnekle)

Bu eğitimde, tekli tasarım modelini ve bunun Java'da nasıl uygulanacağını örnekler yardımıyla öğreneceğiz.

Singleton, Java'ya özgü bir özellikten ziyade bir tasarım modelidir. Bir sınıfın yalnızca bir örneğinin oluşturulmasını sağlar.

Bir tasarım deseni, dünya çapındaki programcılar tarafından paylaşılan çeşitli kodlama tekniklerini içeren kod kitaplığımıza benzer.

Java Singleton

Java'da tekilleri nasıl kullanabileceğimiz aşağıda açıklanmıştır.

  • privatesınıfın dışında bir nesne oluşturmayı kısıtlayan bir kurucu oluşturun
  • privatesingleton nesnesine başvuran bir öznitelik oluşturun .
  • public staticOluşturduğumuz nesneyi oluşturmamıza ve ona erişmemize izin veren bir yöntem oluşturun. Yöntemin içinde, bizi birden fazla nesne oluşturmamızı kısıtlayan bir koşul oluşturacağız.

İşte bir örnek.

 class SingletonExample ( // private field that refers to the object private static SingletonExample singleObject; private SingletonExample() ( // constructor of the SingletonExample class ) public static SingletonExample getInstance() ( // write code that allows us to create only one object // access the object as per our need ) ) 

Yukarıdaki örnekte,

  • private static SingletonExample singleObject - sınıfın nesnesine bir referans.
  • private SingletonExample() - sınıfın dışında nesneler oluşturmayı kısıtlayan özel bir kurucu.
  • public static SingletonExample getInstance()- bu yöntem başvuruyu sınıfın tek nesnesine döndürür. Yöntem statik olduğundan, sınıf adı kullanılarak erişilebilir.

Singleton Sınıfının Kullanımı

Veritabanları ile çalışırken singleton kullanılabilir. Tüm istemciler için aynı bağlantıyı yeniden kullanırken veritabanına erişmek için bir bağlantı havuzu oluşturmak için kullanılabilirler. Örneğin,

 class Database ( private static Database dbObject; private Database() ( ) public static Database getInstance() ( // create object if it's not already created if(dbObject == null) ( dbObject = new Database(); ) // returns the singleton object return dbObject; ) public void getConnection() ( System.out.println("You are now connected to the database."); ) ) class Main ( public static void main(String() args) ( Database db1; // refers to the only object of Database db1= Database.getInstance(); db1.getConnection(); ) ) 

Programı çalıştırdığımızda çıktı şöyle olacaktır:

 Artık veritabanına bağlısınız. 

Yukarıdaki örneğimizde,

  • Tekil sınıf bir Veritabanı oluşturduk.
  • DbObject, bir sınıf türü alanıdır. Bu, Veritabanı sınıfının nesnesine atıfta bulunacaktır.
  • Özel kurucu Database(), sınıf dışında nesne oluşturmayı engeller.
  • Statik sınıf türü yöntemi getInstance(), sınıfın örneğini dış dünyaya döndürür.
  • Main sınıfında, db1 sınıf tipi değişkenimiz var. getInstance()Veritabanının tek nesnesini almak için db1 kullanarak çağırıyoruz .
  • Yönteme getConnection()yalnızca Veritabanı nesnesi kullanılarak erişilebilir.
  • Veritabanının yalnızca bir nesnesi olabileceğinden, tüm istemciler veritabanına tek bir bağlantı üzerinden erişebilir.

Tekillerin anlamlı olduğu yalnızca birkaç senaryo (günlük kaydı gibi) olduğunu unutmamak önemlidir. Bir veritabanı bağlantısı bile genellikle tek bir bağlantı olmamalıdır.

Kullanıp kullanmayacağınızdan emin değilseniz, tekilleri tamamen kullanmaktan kaçınmanızı tavsiye ederiz. Daha fazla bilgi edinin: Singleton hakkında bu kadar kötü olan ne?

Ilginç makaleler...