Sobes.tech
Middle

Ի՞նչ է տարբերությունը 'ֆաբրիկա' պattern-ի և 'ֆաբրիկայի մեթոդի' միջև։

sobes.tech AI

Պատասխան AI-ից

Սխեման "Ֆաբրիկա" (Simple Factory) պատասխանատու է օբյեկտների ստեղծման համար մեկ տիպի, թաքցնելով նրանց ինստանցիացման տրամաբանությունը։ Այն ներկայացվում է որպես առանձին դաս կամ סטատիկ ֆունկցիա, որը հիմք ընդունելով մուտքային պարամետրերը, ստեղծում և վերադարձնում է կոնկրետ օբյեկտ։

<?php

class ProductA {}
class ProductB {}

class ProductFactory
{
    public static function createProduct(string $type)
    {
        switch ($type) {
            case 'A':
                return new ProductA();
            case 'B':
                return new ProductB();
            default:
                throw new \InvalidArgumentException("Invalid product type");
        }
    }
}

"Ֆաբրիկայի մեթոդ" (Factory Method) մոդելը ստեղծող է, որը սահմանում է օբյեկտի ստեղծման ինտերֆեյսը, բայց թույլ է տալիս ենթակլասներին որոշել, թե որ դասը պետք է ինստանցիացվի։ Այն փոխանցում է օբյեկտների ստեղծման պատասխանատվությունը ենթակլասներին։

<?php

interface Product
{
    public function operation(): string;
}

class ConcreteProductA implements Product
{
    public function operation(): string
    {
        return "Result of ConcreteProductA";
    }
}

class ConcreteProductB implements Product
{
    public function operation(): string
    {
        return "Result of ConcreteProductB";
    }
}

abstract class Creator
{
    abstract public function factoryMethod(): Product;

    public function someOperation(): string
    {
        // Call the factory method to create a Product object.
        $product = $this->factoryMethod();
        // Now, use the product.
        return "Creator: The same creator's code has just worked with " . $product->operation();
    }
}

class ConcreteCreatorA extends Creator
{
    public function factoryMethod(): Product
    {
        return new ConcreteProductA();
    }
}

class ConcreteCreatorB extends Creator
{
    public function factoryMethod(): Product
    {
        return new ConcreteProductB();
    }
}

Հիմնական տարբերությունը հետևյալն է.

Գծագրություն "Ֆաբրիկա" (Simple Factory) մոդելը՝ մեկ դաս կամ ստատիկ ֆունկցիա ստեղծում է օբյեկտներ։ "Ֆաբրիկայի մեթոդ" (Factory Method) մոդելը՝ ենթակլասները որոշում են, թե որ դասը պետք է ինստանցիացվի։
Գործառույթը Սահմանափակ։ Պահանջում է փոփոխություններ ֆաբրիկայի դասում նոր տիպի արտադրանքի ավելացման ժամանակ։ Բարձր։ Հեշտ է ընդլայնել նոր ենթակլասների ավելացմամբ։
ժառանգականություն Սովորաբար չի օգտագործվում կամ օգտագործվում է միայն մեկ ֆաբրիկայի համար։ Զависում է ժառանգությունից՝ որոշելու համար, թե ինչ տիպի օբյեկտ է ստեղծվում։
Աբստրակտության մակարդակ Փոքր։ Ավելի բարձր։
Մասին նպատակ Կենտրոնացված օբյեկտների ստեղծում։ Օբյեկտների ստեղծումը հանձնարարվում է ենթակլասներին։