Sobes.tech
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()  # Натиҷа: Таҳвил бо камион

Ин усул имкон медиҳад, ки объектҳои синфҳои гуногунро бидуни тағир додани коди истифодаи онҳо эҷод кард.