Factory Method Design Pattern Python programlama dili ile kullanımı
from abc import ABC, abstractmethod
# Ürün soyut sınıfı
class Product(ABC):
@abstractmethod
def operation(self) -> str:
pass
# İlk ürün sınıfı
class ConcreteProductA(Product):
def operation(self) -> str:
return "ConcreteProductA"
# İkinci ürün sınıfı
class ConcreteProductB(Product):
def operation(self) -> str:
return "ConcreteProductB"
# Fabrika sınıfı
class Creator(ABC):
@abstractmethod
def factory_method(self) -> Product:
pass
def some_operation(self) -> str:
# Ürünleri oluştur ve operasyonları gerçekleştir
product = self.factory_method()
result = f"Creator: The same creator's code has just worked with {product.operation()}"
return result
# İlk fabrika sınıfı
class ConcreteCreatorA(Creator):
def factory_method(self) -> Product:
return ConcreteProductA()
# İkinci fabrika sınıfı
class ConcreteCreatorB(Creator):
def factory_method(self) -> Product:
return ConcreteProductB()
# Kullanım
if __name__ == "__main__":
print("Client: Testing client code with the first creator...")
creator = ConcreteCreatorA()
print(creator.some_operation())
print("\n")
print("Client: Testing the same client code with the second creator...")
creator = ConcreteCreatorB()
print(creator.some_operation())
Bu örnekte, Product
soyut sınıfı altında iki ürün sınıfı (ConcreteProductA
ve ConcreteProductB
) oluşturduk. Creator
soyut sınıfı altında, ürün nesnesini oluşturmak için kullanılan factory_method()
adlı bir soyut yöntem tanımladık. Ardından, her ürün sınıfı için bir ConcreteCreator
sınıfı oluşturduk. Son olarak, main
işlevinde, her ConcreteCreator
nesnesini kullanarak some_operation()
yöntemini çağırdık.
Bu örnekte, ConcreteCreatorA
nesnesi oluşturulduğunda ConcreteProductA
ürününün oluşturulduğunu ve some_operation()
yöntemi tarafından işlendiğini görebilirsiniz. Benzer şekilde, ConcreteCreatorB
nesnesi oluşturulduğunda ConcreteProductB
ürününün oluşturulduğunu ve some_operation()
yöntemi tarafından işlendiğini görebilirsiniz.