亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

invoke在PHP設計模式中的應用案例

PHP
小樊
83
2024-07-22 13:18:06
欄目: 編程語言

在PHP設計模式中,invoke方法通常用于實現“策略模式”和“命令模式”。

在“策略模式”中,invoke方法可以用來執行不同的策略類。例如:

interface PaymentStrategy {
    public function invoke();
}

class CreditCardPayment implements PaymentStrategy {
    public function invoke() {
        echo "Processing credit card payment...";
    }
}

class PayPalPayment implements PaymentStrategy {
    public function invoke() {
        echo "Processing PayPal payment...";
    }
}

class PaymentContext {
    private $paymentStrategy;

    public function __construct(PaymentStrategy $paymentStrategy) {
        $this->paymentStrategy = $paymentStrategy;
    }

    public function processPayment() {
        $this->paymentStrategy->invoke();
    }
}

$creditCardPayment = new CreditCardPayment();
$paymentContext = new PaymentContext($creditCardPayment);
$paymentContext->processPayment(); // Output: Processing credit card payment...

在“命令模式”中,invoke方法可以用來執行具體的命令操作。例如:

interface Command {
    public function invoke();
}

class Light {
    public function turnOn() {
        echo "Light turned on";
    }

    public function turnOff() {
        echo "Light turned off";
    }
}

class TurnOnLightCommand implements Command {
    private $light;

    public function __construct(Light $light) {
        $this->light = $light;
    }

    public function invoke() {
        $this->light->turnOn();
    }
}

class TurnOffLightCommand implements Command {
    private $light;

    public function __construct(Light $light) {
        $this->light = $light;
    }

    public function invoke() {
        $this->light->turnOff();
    }
}

class RemoteControl {
    private $command;

    public function setCommand(Command $command) {
        $this->command = $command;
    }

    public function pressButton() {
        $this->command->invoke();
    }
}

$light = new Light();
$turnOnCommand = new TurnOnLightCommand($light);
$turnOffCommand = new TurnOffLightCommand($light);

$remote = new RemoteControl();
$remote->setCommand($turnOnCommand);
$remote->pressButton(); // Output: Light turned on

$remote->setCommand($turnOffCommand);
$remote->pressButton(); // Output: Light turned off

在這兩個案例中,invoke方法被用來執行具體的操作,從而實現了策略模式和命令模式。這樣可以靈活的切換不同的策略或命令,而不需要修改調用方的代碼。

0
全椒县| 凌海市| 金乡县| 清水河县| 丹棱县| 荃湾区| 湟源县| 策勒县| 兰坪| 惠州市| 铁力市| 万州区| 英山县| 大化| 新野县| 峨山| 仙游县| 祁东县| 香格里拉县| 普安县| 广宗县| 鄂伦春自治旗| 贵德县| 保亭| 买车| 伊通| 盱眙县| 瑞昌市| 砀山县| 海林市| 铁力市| 石家庄市| 永年县| 辽宁省| 永济市| 民丰县| 三亚市| 乐安县| 顺义区| 老河口市| 板桥市|