Factory Method Design Pattern: Bir arayüz sağlar ve alt sınıfların bu arayüzü uygulayarak nesneleri oluşturmasını sağlar. Bu sayede, nesne oluşturma işlemi istemciden gizlenir. Böylelikle alt sınıfların nesne oluşturma mantığını değiştirmesi kolaylaşır. Factory Method, nesnelerin oluşturulmasıyla ilgili kararların alt sınıflara devredilmesi gerektiği durumlarda kullanılır.
Bir senaryo için bir örnek düşünelim: bir e-ticaret uygulaması. Bu uygulamada, farklı ürün kategorileri için ürün oluşturma işlemlerini Factory Method tasarım deseni ile gerçekleştirebiliriz.
public interface Product {
void display();
}
public class Laptop implements Product{
@Override
public void display() {
System.out.println("Laptop: Dell Precision 3520");
}
}
public class Phone implements Product{
@Override
public void display() {
System.out.println("Telefon: Iphone 15 Prox Max");
}
}
public abstract class ProductFactory {
abstract Product createProduct();
public void processOrder() {
Product product = createProduct();
product.display();
}
}
public class LaptopFactory extends ProductFactory{
@Override
Product createProduct() {
return new Laptop();
}
}
public class PhoneFactory extends ProductFactory{
@Override
Product createProduct() {
return new Phone();
}
}
public class Main {
public static void main(String[] args) {
// Factory Method Design Pattern
factoryMethodDesignPattern();
}
private static void factoryMethodDesignPattern() {
ProductFactory phoneFactory = new PhoneFactory();
ProductFactory laptopFactory = new LaptopFactory();
phoneFactory.processOrder();
laptopFactory.processOrder();
}
}
Bu örnekte, Product arayüzü telefon ve laptop ürünlerini temsil ettik. Phone ve Laptop ürünler için arayüzü uyguladık. ProductFactory sınıfından, Factory Method (createProduct) oluşturup, bu sınıfın alt sınıflarına (PhoneFactory ve LaptopFactory) bu methodları uyguladık. Ana işlem processOrder metodu, Factory Method’u çağırarak bir ürün oluşturup ve onunla ilgili bilgileri gösterdik. Main sınıfında, farklı ürünleri sipariş ederek ve bilgileri görüntüleyerek bu desenin nasıl kullanılacağını görmüş olduk.