中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
肇源县| 上思县| 开封县| 林口县| 正阳县| 灵宝市| 林甸县| 阳新县| 德清县| 南投县| 山东省| 万宁市| 涿州市| 屏东市| 无为县| 堆龙德庆县| 云梦县| 乌鲁木齐市| 普定县| 屏东市| 霍林郭勒市| 策勒县| 洛扎县| 正宁县| 秦安县| 湄潭县| 富顺县| 茂名市| 南召县| 常山县| 芷江| 个旧市| 肇庆市| 鸡东县| 玛多县| 浦县| 太和县| 商南县| 长沙市| 怀仁县| 璧山县|