Patrón de fábrica abstracto (PHP)

El código de muestra PHP del patrón de fábrica abstracto es fácil de entender rápidamente el patrón de diseño.

  1. Diagrama de estructura
    Antes de la
    Inserte la descripción de la imagen aquí
    optimización: Después de la optimización:Inserte la descripción de la imagen aquí

  2. Fábrica de mascarillas

interface IMask {
    
    
    function showMask();
}

class LowEndMask implements IMask {
    
    
    public function showMask(){
    
    
        echo "我的低端口罩\n";
    }
}

class HighEndMask implements IMask {
    
    
    public function showMask(){
    
    
        echo "我的高端口罩\n";
    }
}
  1. Fábrica de ropa protectora
interface IProtectiveSuit {
    
    
    function showSuit();
}

class LowEndProtectiveSuit implements IProtectiveSuit {
    
    
    public function showSuit(){
    
    
        echo "我是低端防护服\n";
    }
}


class HighEndProtectiveSuit implements IProtectiveSuit {
    
    
    public function showSuit(){
    
    
        echo "我是高端防护服\n";
    }
}
  1. Fábricas de alto nivel y fábricas de bajo nivel
interface IFactory {
    
    
    //创建口罩
    function createMask();
    //创建防护服
    function createSuit();
}

class LowEndFactory implements IFactory {
    
    
    public function createMask() {
    
    
        $mask =  new LowEndMask();
        // .....
        //  LowEndMask的100行初始化代码
        return $mask;
    }

    public function createSuit() {
    
    
        $suit =  new LowEndProtectiveSuit();
        // .....
        //  LowEndProtectiveSuit的100行初始化代码
        return $suit;
    }
}

class HighEndFactory implements IFactory {
    
    
    public function createMask() {
    
    
        $mask =  new HighEndMask();
        // .....
        // HighEndMask的100行初始化代码
        return $mask;
    }

    public function createSuit() {
    
    
        $suit =  new HighEndProtectiveSuit();
        // .....
        //  HighEndProtectiveSuit的100行初始化代码
        return $suit;
    }
}
  1. Interfaz de prueba
class Test {
    
    

    public function main() {
    
    
        $factoryA = new LowEndFactory();
        $factoryB = new HighEndFactory();
        //创建低端口罩
        $maskA = $factoryA ->createMask();
        //创建高端口罩
        $maskB = $factoryB ->createMask();
        //创建低端防护服
        $suitA = $factoryA ->createSuit();
        //创建高端防护服
        $suitB = $factoryA ->createSuit();

        $maskA->showMask();
        $maskB->showMask();
        $suitA->showSuit();
        $suitB->showSuit();
    }
}

$tst = new Test();
$tst ->main();

Resultado:
Inserte la descripción de la imagen aquí
Referencia: https://mp.weixin.qq.com/s/K_E9pI5rnkjHU0eizg9lqg

Supongo que te gusta

Origin blog.csdn.net/qq_36453564/article/details/108576796
Recomendado
Clasificación