Multiton Tasarım Deseni

Herkese merhaba, C# yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda multiton tasarım desenini anlatacağım. Hadi başlayalım !
İçerik Detayları
Multiton Tasarım Deseni Adımları
Multiton tasarım deseni, aynı sınıfın farklı örneklerinin oluşturulmasına olanak sağlayan bir tasarım desenidir. Bu desen, Singleton tasarım desenine benzer ancak farklı olarak bir sınıfın birden fazla örneğinin oluşturulmasına izin verir. C# dilinde Multiton tasarım deseni uygulanırken, aşağıdaki adımlar takip edilebilir:
- Multiton sınıfı tanımlanır.
- Sınıfın tek bir örneği için bir örnek değişkeni tanımlanır.
- Sınıfın birden fazla örneği için bir koleksiyon (örneğin Dictionary) tanımlanır.
- Yapıcı metot özel olarak tanımlanır ve örnekleme için parametreler alır.
- Yapıcı metot, parametrelerle bir anahtar oluşturur ve anahtar koleksiyonda aranır.
- Eğer anahtar koleksiyonda yoksa, yeni bir örnek oluşturulur ve koleksiyona eklenir.
- Son olarak, örnek koleksiyondan geri döndürülür.
C# İle Multiton Tasarım Deseni Örneği
Aşağıda, C# dilinde bir Multiton tasarım deseni uygulamasına örnek bir kod verilmiştir:
using System;
using System.Collections.Generic;
public class Multiton
{
private static Dictionary<string, Multiton> instances = new Dictionary<string, Multiton>();
private static int instanceCount = 0;
private string instanceName;
private Multiton(string name)
{
instanceName = name;
instanceCount++;
Console.WriteLine("Created instance {0} ({1} instances)", instanceName, instanceCount);
}
public static Multiton GetInstance(string name)
{
if (!instances.ContainsKey(name))
{
instances[name] = new Multiton(name);
}
return instances[name];
}
}
class Program
{
static void Main(string[] args)
{
Multiton instance1 = Multiton.GetInstance("Instance 1");
Multiton instance2 = Multiton.GetInstance("Instance 2");
Multiton instance3 = Multiton.GetInstance("Instance 3");
Multiton instance4 = Multiton.GetInstance("Instance 2");
Console.WriteLine("Instance 1: {0}", instance1.GetHashCode());
Console.WriteLine("Instance 2: {0}", instance2.GetHashCode());
Console.WriteLine("Instance 3: {0}", instance3.GetHashCode());
Console.WriteLine("Instance 4: {0}", instance4.GetHashCode());
Console.ReadLine();
}
}
Bu örnekte, Multiton sınıfı tanımlanır ve koleksiyon olarak Dictionary kullanılır. Yapıcı metot, örnek adını parametre olarak alır ve anahtar olarak kullanır. GetInstance metodu, anahtarın koleksiyonda olup olmadığını kontrol eder ve yoksa yeni bir örnek oluşturur. Son olarak, Main metodu, örneklerin özelliğini göstermek için GetHashCode yöntemini kullanarak örneklerin hash kodunu yazdırır.
Bu örnekte, Instance 2 adlı ikinci örneği oluşturulduğunda, daha önce oluşturulmuş olan Instance 2 anahtarı koleksiyonda bulunacağından yeni bir örnek oluşturulmayacak ve önceki örneğe geri döndürülecektir. Bu nedenle, örneğin hash kodu Instance 2 için aynı olacaktır. Multiton sınıfının birden fazla örneği oluşturulabilmesine izin verildiği için, Singleton tasarım deseni gibi yalnızca tek bir örnek ile sınırlı kalmayacaktır. Ancak, her bir örnek bir anahtarla tanımlanacak ve aynı anahtara sahip örneklerin tekrar oluşturulmasına izin verilmeyecektir. Multiton tasarım deseni, bir sınıfın birden fazla örneği oluşturulmasını gerektiren durumlarda yararlıdır. Örneğin, bir uygulama birden fazla veritabanı bağlantısına sahip olabilir veya birden fazla log dosyası oluşturmak isteyebilirsiniz. Bu durumlarda, Multiton tasarım deseni kullanarak her örneği ayrı ayrı yönetebilirsiniz.
Sonuç
Özetle, C# dilinde Multiton tasarım deseni, aynı sınıfın farklı örneklerinin oluşturulmasına izin veren bir tasarım desenidir. Bu desen, Singleton tasarım desenine benzer ancak birden fazla örneğin oluşturulmasına izin verir. Multiton tasarım deseni, özellikle birden fazla veritabanı bağlantısı veya log dosyası gibi durumlarda yararlıdır.
Tüm C# yazılarımıza buraya, tasarım desenleri yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.