91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
金秀| 德惠市| 浏阳市| 吉隆县| 保康县| 葵青区| 峨边| 高雄市| 克拉玛依市| 安国市| 武山县| 城固县| 尤溪县| 中阳县| 延川县| 卢湾区| 安顺市| 宣化县| 云霄县| 安宁市| 嘉义县| 南城县| 德庆县| 台东县| 垣曲县| 绍兴市| 青岛市| 诏安县| 江华| 白沙| 黑水县| 板桥市| 田东县| 商水县| 平和县| 泰来县| 延安市| 湖口县| 林芝县| 岱山县| 秭归县|