Swift: Singleton Pattern

Ahmet Tunahan Bekdaş
4 min readDec 19, 2023

Herkese merhabalar. Bu yazımızın konusu “Singleton Pattern”. Bu yazımda, Swift dilindeki “Singleton Pattern” ilgili aldığım notları ve yaptığım araştırmalar sonucunda edindiğim bilgileri sizlerle paylaşacağım. Ve konuyu daha iyi anlaşılabilmesi adına basit bir proje üzerinden size aktaracağım. Projenin kodlarına, buradan ulaşabilirsiniz.

Singleton Pattern nedir ?

Singleton Pattern, bir sınıfın yalnızca bir örneğine sahip olmasını sağlayan bir tasarım desenidir. Oluşturduğumuz örnek, projemiz genelinde tek bir noktadan erişilebilir ve paylaşılabilir.

Peki bu ne demek ?

Düz sınıflar birden çok örnek içerebilirken, Singleton deseni yalnızca bir örnek sunar. Singleton, genellikle uygulama genelinde paylaşılan bir kaynağa tek bir noktadan erişim sağlamak veya global durumu kontrol etmek amacıyla kullanılır.

Bunu açıklamanın en güzel yolu bunu bir örnek üzerinden anlatmaktır. Bu şekilde daha iyi şekilde anlaşılıcağını düşünüyorum.

Uygulamamız üzerinde anlatacak olursak

Uygulamamızın amacı kısaca anlatacak olursak “FirstPage” adlı sayfada kullanıcının adını ve soyadını almak. Butona tıklandığında, Singleton deseni kullanarak bu bilgileri “SecondPage” adlı sayfada göstermek.

1. Uygulama Arayüzü Tasarlandı

Storyboard üzerinde basit bir şekilde tasarımımızı tamamladık. “First Page” üzerinden kullanıcı adını ve soyadını girecek. Daha sonra oluşturduğumuz butona tıklayarak “Second Page” sayfasına yönlendirilecek.

1. Uygulama Arayüzü
1. Uygulama Arayüzü Tasarlandı

2. FirstPage ve SecondPage Objeleri Bağlandı

Bu kısımda tasarladığımız “FirstPage” içersinde bulunan objelerimizi sayfamıza tanımladık. Aynı işlemi “SecondPage” içinde uyguladık

2. FirstPage ve SecondPage Objeleri Bağlandı

3. Şimdi sıra Singelton’ı nasıl tanımlayıp, nasıl kullacağımıza geldi

Öncelikle kendimize bir Swift dosyası tanımlıyoruz. Ben daha iyi anlaşılması açısından “Singleton” dedim, fakat bu isteğe bağlı bir isimlendirme olacak; mesela buna projemize uygun olarak “User” adını da verebilirdik.

3. Şimdi sıra Singelton’ı nasıl tanımlayıp, nasıl kullacağımıza geldi

Singleton sayfamızda, “Singleton” adında bir sınıf tanımladık. Bu sınıf, Singleton Pattern kullanılarak yalnızca bir örneğe sahip olacak şekilde tasarladık. “sharedInstance” adlı özellik, bu örneğe genel erişimi sağlar. Yani proje içersinde herhangi bir yerde istediğimiz zaman kullanabilme imkanı sunar. “userName” ve “userSurname” adlı değişkenler, bu Singleton örneği üzerinden kullanıcının adı ve soyadını saklar. “private init() {}” ifadesi ile sınıfın dışından yeni bir örnek oluşturulmasını engeller, böylece bu sınıfın tek bir örneği paylaşılır ve genel erişim sağlanır.

Kısaca açıklamam gerekirse, bundan sonra projemiz içinde “sharedInstance” adında bir Singleton objemiz var ve bu objeye her yerden erişim sağlayabiliriz.

4. Şimdi ise oluşturduğumuz propertylerin içersine kullanıcıdan aldığımız değerleri ekleyeceğiz.

Burada oluşturduğumuz “toSecondPageButton” fonksiyon çalıştırır ve biz bu butonun içersinde atamalarımızı yaptık işlemleri adım adım anlatmam gerekirse:

  1. Oluşturduğumuz Singleton objesi içerisindeki “UserName” özelliğini, kullanıcının “userNameTextField” içerisine yazdığı isimle güncelledik (28. Satır).
  2. Aynı şekilde Oluşturduğumuz Singleton objesi içerisindeki “UserSurname” özelliğini, kullanıcının “userSurnameTextField” içerisine yazdığı isimle güncelledik (31. Satır).
  3. 3. “toSecondPage” Segue’sini çalıştırarak ikinci sayfaya geçiş yaptık.(35. Satır)

5. Ve şimdi değerlerimizi SecondPage ekranında göstereceğiz

viewDidLoad() fonksiyonu, bir UIViewController’ın yaşam döngüsünün bir parçasıdır; sayfa yüklendiğinde otomatik olarak çalışır. Burada, kullanıcının bilgilerini direkt olarak göstermek istediğimiz için, bu fonksiyon içinde Singleton objesinden alınan değerleri kullanacağız.

Adım adım anlatmam gerekirse:

  1. SecondPage’ imizde tanımladığımız “UserNameLabel” satırının yerine artık bir önceki sayfada(FirstPage) kullancının girmiş olduğu değeri alacağız işte tam burada Singleton yapımızı kullacağız ve Singleton sınıfımız giderek userName değerimizi alacağız (22.Satır)
  2. SecondPage’ imizde tanımladığımız “UserNameLabel” satırının yerine artık bir önceki sayfada(FirstPage) kullancının girmiş olduğu değeri alacağız işte tam burada Singleton yapımızı kullacağız ve Singleton sınıfımız giderek userName değerimizi alacağız (25.Satır)

Uygulamamızı Çalıştıralım

Oluşturduğumuz projenin kodlarına ve diğer projelerimi incelemek isterseniz Github profilimden erişebilirsiniz 👨🏻‍💻

Bu yazımda “Singleton Pattern” hakkında bilgi vermeye çalıştım. Sorlarınız veya geri bildirimleriniz için Linkedin ve Twitter(X)hesaplarımdan bana ulaşabilirsiniz. Umarım bu yazılar, kendi gelişimim ve bu alanda ilerlemek isteyen diğer insanlar için faydalı olur. Bir sonraki yazıda görüşmek üzere ✌🏻

--

--