Factory Method (Python):
- Bu metod da bir sınıftan nesne oluşturma konusunu ele alıyoruz.
- Nesne oluşturmak için ;doğrudan bir sınıftan ve bir factory pattern yöntemi kullanarak iki yöntemden bahsediyoruz.
- Factory Pattern yöntemi, belirli bir türde yeni bir nesne döndüren statik bir yöntemdir.
- Bir Factory Pattern yöntemi uygulamak için adımlar şöyle:
1. Bir sınıf tanımlıyoruz (örneğin, "yarış arabası").
2. Tanımlanan sınıf türünde nesneler döndüren statik bir yönteme (örn. "make") sahip bir factory sınıfı oluşturuyoruz.
3. Nesneleri oluşturmak için factory pattern yöntemini çağırıyoruz.
- Factory Pattern yöntemleri, parametrelerle nesne oluşturulmasına izin vererek girdiye dayalı olarak farklı nesne türlerinin oluşturulmasını sağlar.
- Factory Pattern yöntemine birden fazla sınıf (örneğin, "otobüs" ve "yarış arabası") eklenebilir ve her biri parametrelere dayalı olarak farklı nesne türleri döndürebilir.
- Factory Pattern yöntemi kolayca ilave sınıfları içerecek şekilde genişletilebilir, bu da onu girdi parametrelerine dayalı nesneler oluşturmak için genişletilebilir bir yaklaşım haline getiriyor.
Code:
class CarFactory(object):
def make(type):
if type == "racecar":
return RaceCar()
elif type == "van":
return Van()
elif type == "bus":
return Bus()
make = staticmethod(make)
class Van:
wheels = 4
top_speed = 100
class Bus:
wheels = 4
top_speed = 80
class RaceCar:
wheels = 4
top_speed = 300
obj1 = CarFactory.make("bus")
obj2 = CarFactory.make("racecar")
obj3 = CarFactory.make("van")
print(obj1.top_speed)
print(obj2.top_speed)
def make_vehicle(vehicle_type):
"""
Sağlanan vehicle_type'a dayalı olarak farklı araç türleri oluşturmak için Factory Design
Args:
vehicle_type (str): Oluşturulacak Araç Türü.
Returns:
Vehicle: İlgili araç türünün bir örneği.
Raises:
ValueError: Sağlanan vehicle_type desteklenmiyorsa.
"""
if vehicle_type == "racecar":
return RaceCar()
elif vehicle_type == "van":
return Van()
elif vehicle_type == "bus":
return Bus()
else:
raise ValueError("Geçersiz araç tipi sağlandı.")
Düşünce Mezarlığı
Personel Message: π ,∞, %79, α