Sobes.tech
Middle

Mis vahe on 'tööstus' mustril ja 'tööstusmeetodil'?

sobes.tech AI

Vastus AI-lt

"Fabrikas" (Simple Factory) paraugs ir atbildīgs par vienas tipa objektu izveidi, slēpjot to instancēšanas loģiku. Tas pārstāv atsevišķu klasi vai statisku funkciju, kas, pamatojoties uz ievades parametriem, izveido un atgriež konkrētu objektu.

<?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("Nederīgs produkta tips");
        }
    }
}

"Fabrikas metodes" (Factory Method) ir radniecības veidojošs dizaina paraugs, kas nosaka interfeisu objektu izveidei, bet ļauj apakšklasēm izlemt, kuru klasi instancēt. Tas pārnēsā atbildību par objektu izveidi uz apakšklasēm.

<?php

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

class ConcreteProductA implements Product
{
    public function operation(): string
    {
        return "ConcreteProductA rezultāts";
    }
}

class ConcreteProductB implements Product
{
    public function operation(): string
    {
        return "ConcreteProductB rezultāts";
    }
}

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

    public function someOperation(): string
    {
        // Izsauc fabrikas metodi, lai izveidotu Product objektu.
        $product = $this->factoryMethod();
        // Tagad izmanto produktu.
        return "Radītājs: Tā paša radītāja kods tikko ir strādājis ar " . $product->operation();
    }
}

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

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

Galvenā atšķirība ir šāda:

Raksturlielums "Fabrikas" (Simple Factory) paraugs "Fabrikas metodes" (Factory Method) paraugs
Atbildība Viena klase vai statiska funkcija izveido objektus. Apakšklases nosaka, kāda veida objekts tiek izveidots.
Elastība Ierobežota. Nepieciešama izmaiņa fabrikas klasē, pievienojot jaunu produkta tipu. Augsta. Viegli paplašināms, pievienojot jaunas apakšklases-ražotājus.
Mantošana Parasti netiek izmantota vai tiek izmantota, lai izveidotu vienu fabriku. Balstās uz mantošanu, lai noteiktu, kādu objektu izveidot.
Abstrakcijas līmenis Mazāk abstrakts. Vairāk abstrakts.
Mērķis Centralizēta objektu izveide. Objektu izveides deleģēšana apakšklasēm.