Junior — Middle
Дар кадом ҳолатҳо ва барои кадом вазифаҳо паттерни Factory Method истифода мешавад?
sobes.tech AI
Ҷавоб аз AI
Модели Factory Method барои эҷоди объектҳо бидуни нишон додани синфи мушаххаси объект истифода мешавад. Ин дар ҳолатҳои зерин муфид аст:
- Дар вақти лозим аст, ки эҷоди объектҳоро ба субклассҳо вогузор кунед.
- Барои таъмини чандирӣ ва васеъшавии коди лозим аст.
- Логикаи эҷоди объектҳоро аз муштарӣ пинҳон кардан лозим аст.
Масалан дар Python:
from abc import ABC, abstractmethod
class Transport(ABC):
@abstractmethod
def deliver(self):
pass
class Truck(Transport):
def deliver(self):
print("Таҳвил бо камион")
class Ship(Transport):
def deliver(self):
print("Таҳвил бо киштӣ")
class Logistics(ABC):
@abstractmethod
def create_transport(self) -> Transport:
pass
def plan_delivery(self):
transport = self.create_transport()
transport.deliver()
class RoadLogistics(Logistics):
def create_transport(self) -> Transport:
return Truck()
class SeaLogistics(Logistics):
def create_transport(self) -> Transport:
return Ship()
# Истифода
logistics = RoadLogistics()
logistics.plan_delivery() # Натиҷа: Таҳвил бо камион
Ин усул имкон медиҳад, ки объектҳои синфҳои гуногунро бидуни тағир додани коди истифодаи онҳо эҷод кард.