策略模式(Strategy Pattern)定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户
FlyBehavior 接口。定义飞行行为
<?php
interface FlyBehavior {
function fly();
}
?>
FlyWithWings类。实现了fly()方法。定义具体的飞行行为
<?php
class FlyWithWings implements FlyBehavior {
function fly() {
echo 'i am fly with wings!';
}
}
?>
FlyNoWay 类。实现了fly方法。定义具体的飞行行为
<?php
class FlyNoWay implements FlyBehavior {
function fly() {
echo 'i can not fly!';
}
}
?>
Quack 接口。定义叫声行为
<?php
interface Quack {
function quack();
}
?>
Squeak类。实现了quack()方法。定义具体的叫声方法。
<?php
class Squeak implements Quack {
function quack() {
echo 'Squeak, Squeak, Squeak!';
}
}
?>
FakeQuack 类。实现了quack()。
<?php
class FakeQuack implements Quack {
function quack(){
echo 'No sound!'';
}
}
?>
Duck类。为一抽象类。
<?php
abstract class Duck {
public $flyBehavior;
public $quack;
function performFly() {
$this->flyBehavior->fly();
}
function performQuack() {
$this->quack->quack();
}
abstract function display();
}
?>
具体的MallardDuck (野鸭)类。
<?php
include_once 'FlyBehavior.php';
include_once 'FlyWithWings.php';
include_once 'Quack.php';
include_once 'Squeak.php';
include_once 'Duck.php';
class MallardDuck extends Duck {
function MallardDuck() {
$this->flyBehavior = new FlyWithWings();
$this->quack = new Squeak();
}
function display() {
echo 'i am a real Mallard duck!';
}
}
$mallardDuck = new MallardDuck();
$mallardDuck->performFly();
$mallardDuck->performQuack();
$mallardDuck->display();
?>
分享到:
相关推荐
在《HeadFirst策略模式》中,作者通过生动有趣的例子和直观的视觉呈现,帮助读者深入理解这一模式,并提供了C++实现的示例代码,便于实践和学习。阅读本书,你可以更好地掌握如何在实际项目中运用策略模式,提高代码...
### 策略模式 Strategy Pattern #### 概述 策略模式是一种行为设计模式,它使得算法可以在运行时被更改。这种模式允许一个类的行为或其算法在运行时根据需要进行改变,通过这种方式,我们可以轻松地扩展不同的算法...
在《Head First 设计模式》这本书中,策略模式被用来演示如何在不修改原有代码的情况下,通过改变执行策略来改变对象的行为。例如,我们可以创建一个`SortStrategy`接口,包含`sort()`方法,然后定义不同的排序策略...
《Headfirst设计模式》是一本深受开发者欢迎的设计模式学习书籍,尤其对于初学者而言,其独特的教学方式使得复杂的概念变得易于理解。这本书以其高清的中文版PDF格式提供,结合书中源码,为读者提供了深入实践的可能...
在《Head First 设计模式》这本书中,策略模式被详细地讲解,并通过C++代码实现来加深理解。策略模式的核心思想是定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换。这使得算法的变化独立于使用算法的...
综上所述,这个压缩包提供的“Head First C++策略设计模式”示例,不仅教你如何在C++中实现策略模式,还通过类图帮助你理解面向对象设计中的一个重要概念。通过学习这个案例,你可以更好地掌握如何在实际项目中运用...
《Head First设计模式》是一本深受开发者喜爱的设计模式学习书籍,它以易懂、生动的方式讲解了23种经典的设计模式。源代码是书中理论知识的实践体现,可以帮助读者更深入地理解并应用这些模式。这里我们将围绕这些...
在HeadFirst的《设计模式》一书中,作者以通俗易懂的方式介绍了各种设计模式,包括策略模式,适合初学者和有经验的开发者深入理解设计模式的原理和应用。通过阅读这本书,我们可以更好地掌握如何在实际项目中灵活...
在本文中,我们将深入探讨设计模式的核心概念,并结合"Head First DesignPattern_src"中的源码,详细解析一些关键的设计模式。 1. 单例模式(Singleton): 单例模式确保一个类只有一个实例,并提供全局访问点。在...
在策略模式中,有三个主要角色:策略接口(Strategy Interface)、具体策略类(Concrete Strategy Classes)和上下文(Context)。策略接口定义了所有支持的算法的公共接口,这样上下文就可以通过这个接口来调用这些...
《Head First Design Patterns》不仅传授了具体的设计模式,还特别强调了如何将多个设计模式结合起来创造出新的模式,例如在第12章中,作者介绍了MVC(Model-View-Controller)模式,这是一种广泛应用于软件开发中的...
《Head First 之策略模式源码》是一份深入解析策略模式的编程学习资源,它以Head First系列的易懂风格,结合源代码实例,帮助读者理解并掌握这一设计模式。策略模式是软件工程中的一种行为设计模式,它使你能在运行...
在《Head First设计模式》的第一章中,作者可能通过生动的示例和易于理解的图表,解释了如何在实际问题中识别策略模式的应用场景,以及如何有效地实现和使用这个模式。书中可能涵盖了以下内容: - 策略模式的基本...
3. 行为型设计模式:例如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、访问者模式(Visitor)、备忘录模式(Memento)、状态...
在《Head First 策略者模式》中,作者通过生动有趣的例子,比如“鸭子模拟器”,详细解释了如何使用策略者模式。在这个例子中,有不同种类的鸭子,每种鸭子都有自己的叫声、游泳方式和摆动翅膀的方式。这些行为可以...
我们来看"DesignPattern"这个目录,它可能包含了23种常见的设计模式示例代码,如单例模式、工厂模式、抽象工厂模式、建造者模式、装饰器模式、适配器模式、桥接模式、组合模式、享元模式、代理模式、命令模式、职责...