Rumah > pembangunan bahagian belakang > tutorial php > PHP设计模式之策略模式详解

PHP设计模式之策略模式详解

韦小宝
Lepaskan: 2023-03-17 13:44:02
asal
1734 orang telah melayarinya

策略模式,将一组特定的行为和算法封装成类,来适应某些特定的上下文环境,这种模式就是策略模式策略模式用于算法的自由切换和扩展,它是应用较为广泛的设计模式之一。

EI3FTN7K$LHD2XME59OJ@UD.png

<?php
/*
 *策略模式
 */
interface FlyBehavior
{
    public function fly();
}

class FlyWithWings implements FlyBehavior
{
    public function fly()
    {
        echo "鸭子用翅膀飞行 \n";
    }
}

class FlyWithNo implements FlyBehavior
{
    public function fly()
    {
        echo "鸭子不用翅膀飞行 \n";
    }
}

class Duck
{
    private $_flyBehavior;

    public function performFly()
    {
        $this->_flyBehavior->fly();
    }

    public function setFlyBehavior(FlyBehavior $behavior) //被外部调用设置策略的
    {
        $this->_flyBehavior = $behavior;
    }
}

class RubberDuck extends Duck
{
}

// Test Case
$duck = new RubberDuck();

/*  想让鸭子用翅膀飞行 */
$duck->setFlyBehavior(new FlyWithWings());
$duck->performFly();

/*  想让鸭子不用翅膀飞行 */
$duck->setFlyBehavior(new FlyWithNo());
$duck->performFly();
Salin selepas log masuk

策略模式用于算法的自由切换和扩展,它是应用较为广泛的设计模式之一。策略模式对应于解决某一问题的一个算法族,允许用户从该算法族中任选一个算法来解决某一问题,同时可以方便地更换算法或者增加新的算法。只要涉及到算法的封装、复用和切换都可以考虑使用策略模式

相关推荐:

PHP策略模式定义与用法实例详解

PHP策略模式的代码分享

星际争霸之php策略模式

Atas ialah kandungan terperinci PHP设计模式之策略模式详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan