Fabrika ve Fabrika Yöntemi Tasarım Desenleri Anlayış
Yazılım geliştirmede, tekrar eden kod bloklarının önüne geçmek ve kodu daha organize ve sürdürülebilir hale getirmek için tasarım desenleri kullanılır. Fabrika ve Fabrika Yöntemi desenleri, nesne oluşturma sürecini soyutlayarak bu amaca hizmet eden iki popüler desendir.
Fabrika Deseni
Fabrika deseni, ortak bir arayüz aracılığıyla farklı nesne türleri oluşturma sorumluluğunu üstlenen bir sınıftır. Bir fabrikanın görevi, belirli bir türün nesnesini istediğinde, o nesneyi oluşturmak ve döndürmektir. Fabrika deseni, kodun daha esnek ve genişletilebilir olmasını sağlar, çünkü yeni nesne türleri eklemek için fabrikanın kodunu değiştirmek yerine sadece yeni bir fabrika sınıfı eklemek yeterlidir.
Örneğin, bir oyun geliştiriyorsak, farklı türde düşmanlar oluşturabiliriz. Fabrika deseni, düşman türünü belirten bir parametre alan ve o türden bir düşman nesnesi oluşturan bir DüşmanFabrika sınıfı ile uygulanabilir.
“`html
public class DüşmanFabrika {
public Düşman düşmanOluştur(DüşmanTipi tip) {
switch (tip) {
case ZOMBİ:
return new Zombi();
case SKELET:
return new İskelet();
default:
return null;
}
}
}
“`
Bu örnekte, DüşmanFabrika sınıfı, DüşmanTipi parametresine göre farklı düşman türleri oluşturur. Zombi ve İskelet gibi düşman türlerinin eklenmesi, kodun geri kalanını etkilemeden sadece yeni sınıflar ekleyerek ve DüşmanFabrika‘da gerekli değişiklikleri yaparak yapılabilir.
Fabrika Yöntemi Deseni
Fabrika Yöntemi deseni, Fabrika deseninin bir varyasyonudur ve bir sınıfın nesne oluşturma sorumluluğunu alt sınıflarına devreder. Bu desen, alt sınıfların kendi türlerinden nesneler oluşturmasını sağlar, böylece nesne oluşturma süreci soyutlanır.
Örnek olarak, bir pizza restoranı düşünün. Farklı şubeler farklı türde pizzalar sunabilir. Fabrika Yöntemi deseni, her şubenin kendi Pizza türlerini oluşturmasını sağlar.
“`html
public abstract class Pizza {
public abstract String isim();
public abstract void hazırla();
}
public class MargheritaPizza extends Pizza {
@Override
public String isim() {
return “Margherita Pizza”;
}
@Override
public void hazırla() {
System.out.println(“Margherita pizza hazırlanıyor…”);
}
}
public class Şube {
public Pizza pizzaOluştur() {
return new MargheritaPizza();
}
}
“`
Bu örnekte, Pizza sınıfı soyut bir sınıftır ve hazırla() ve isim() gibi soyut metotlar içerir. MargheritaPizza sınıfı Pizza sınıfından türetilir ve hazırla() ve isim() metotlarını gerçekleştirir. Şube sınıfı, pizzaOluştur() metodunu kullanarak bir pizza nesnesi oluşturur ve bu metot alt sınıf tarafından geçersiz kılınır. Bu, her şubenin kendi pizza türünü oluşturabileceği anlamına gelir.
Avantajları
Fabrika ve Fabrika Yöntemi desenlerinin birçok avantajı vardır:
- Esneklik: Yeni nesne türleri eklemek veya mevcut türleri değiştirmek, kodu etkilemeden yapılabilir.
- Sürdürülebilirlik: Kod daha organize ve anlaşılır hale gelir.
- Genişletilebilirlik: Yeni nesne türleri eklemek kolaydır.
- Soyutlama: Nesne oluşturma süreci, kodu kullananlardan gizlenir.
Dezavantajları
Bu desenlerin dezavantajları da vardır:
- Karmaşıklık: Fabrika desenleri, kodun karmaşıklığını artırabilir, özellikle karmaşık nesne hiyerarşileri için.
- Performans: Fabrika desenleri, performansı etkileyebilir, çünkü nesne oluşturma işlemi ek bir adım gerektirir.
Sonuç
Fabrika ve Fabrika Yöntemi desenleri, yazılım geliştirmede yaygın olarak kullanılan güçlü tasarım desenleridir. Nesne oluşturma sürecini soyutlayarak, kodu daha esnek, sürdürülebilir ve genişletilebilir hale getirir. Ancak, karmaşıklık ve performans açısından dezavantajları da vardır. Bu desenlerin, avantajları ve dezavantajları göz önünde bulundurularak, uygun durumlarda kullanılması gerekir.
Daha fazla bilgi edinmek için [Fatih Soysal’ın Web Sitesini](https://fatihsoysal.com) ziyaret edebilirsiniz.
#Etiketler
Fabrika, Fabrika Yöntemi, Tasarım Deseni, Nesne Oluşturma, Soyutlama, Esneklik, Sürdürülebilirlik, Genişletilebilirlik, Karmaşıklık, Performans