`
jiapumin
  • 浏览: 344428 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java设计模式之:策略模式 例子

 
阅读更多
例子目录结构:


代码:
Duck.java
package com.dp.one.behavior.quack;

import com.dp.one.behavior.QuackBehavior;
public class Quack implements QuackBehavior {
	public void quack() {
		System.out.println("Quack!");
	}
}

ModelDuck.java
package com.dp.one.duck;

import com.dp.one.Duck;
import com.dp.one.behavior.fly.FlyNoWay;
import com.dp.one.behavior.quack.Quack;

public class ModelDuck extends Duck {

	public ModelDuck(){
		setFlyBehavior(new FlyNoWay());
		setQuackBehavior(new Quack());
	}
	@Override
	public void display() {
		System.out.println("I'm a real Model duck!");
	}
}

MallardDuck.java
package com.dp.one.duck;

import com.dp.one.Duck;
import com.dp.one.behavior.fly.FlyWithWings;
import com.dp.one.behavior.quack.Quack;

public class MallardDuck extends Duck {
	public MallardDuck(){
		setQuackBehavior(new Quack());
		setFlyBehavior(new FlyWithWings());
	}
	@Override
	public void display() {
		System.out.println("I'm a real Mallard duck!");
	}
}

FlyBehavior.java
package com.dp.one.behavior;

public interface FlyBehavior {
	void fly();
}

FlyNoWay.java
package com.dp.one.behavior.fly;

import com.dp.one.behavior.FlyBehavior;
public class FlyNoWay implements FlyBehavior {

	public void fly() {
		System.out.println("I can't fly!");
	}
}

FlyRocketPowered.java
package com.dp.one.behavior.fly;

import com.dp.one.behavior.FlyBehavior;
public class FlyRocketPowered implements FlyBehavior {

	public void fly() {
		System.out.println("I'm flying with a rocket!");
	}
}

FlyWithWings.java
package com.dp.one.behavior.fly;

import com.dp.one.behavior.FlyBehavior;
public class FlyWithWings implements FlyBehavior {

	public void fly() {
		System.out.println("I'm flying!");
	}
}

QuackBehavior.java
package com.dp.one.behavior;

public interface QuackBehavior {
	void quack();
}

MuteQuack.java
package com.dp.one.behavior.quack;

import com.dp.one.behavior.QuackBehavior;
public class MuteQuack implements QuackBehavior {

	public void quack() {
		System.out.println("<<Silence>>");
	}
}

Quack.java
package com.dp.one.behavior.quack;

import com.dp.one.behavior.QuackBehavior;
public class Quack implements QuackBehavior {
	public void quack() {
		System.out.println("Quack!");
	}
}

Squeak.java
package com.dp.one.behavior.quack;

import com.dp.one.behavior.QuackBehavior;
public class Squeak implements QuackBehavior {
	public void quack() {
		System.out.println("Squeak!");
	}
}

MiniDuckSimulator.java
package com.dp.one;

import com.dp.one.behavior.fly.FlyRocketPowered;
import com.dp.one.duck.MallardDuck;
import com.dp.one.duck.ModelDuck;

public class MiniDuckSimulator {
	public static void main(String[] args) {
		Duck duck = new MallardDuck();
		duck.performFly();
		duck.performQuack();
		
		Duck model = new ModelDuck();
		model.performFly();
		model.setFlyBehavior(new FlyRocketPowered());
		model.performFly();
		model.performQuack();
	}

}
  • 大小: 28.4 KB
分享到:
评论

相关推荐

    设计模式--策略模式java例子

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常...在压缩包文件"StrategyPatterns例子"中,你可以找到使用Java实现策略模式的示例代码,这将有助于进一步理解策略模式的运用。

    JAVA设计模式例程-策略模式

    总的来说,这个“JAVA设计模式例程-策略模式”提供了一个学习和实践策略模式的好例子,通过阅读和分析源代码,我们可以更好地理解如何在实际开发中应用这一模式,提升我们的编程技巧和设计能力。

    java 策略模式的小例子

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式主要通过接口或抽象类来定义一系列的算法,并将每个算法封装起来,使得它们可以互相替换,让算法独立于使用它的客户。下面我们将...

    java策略模式小例子

    在这个名为"java策略模式小例子"的项目中,我们可以预期看到一个简单的示例,演示了如何在Java中应用策略模式。`Strategy(Game)`可能包含了一些不同的策略类,每个类代表一种特定的游戏策略,以及一个上下文(Context...

    Java 设计模式 策略模式

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式主要通过定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户而变化。 首先,策略模式的...

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    java 23种设计模式及具体例子

    java 设计模式 java 设计模式是软件工程的基石,它们被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式可以让代码更容易被他人理解、保证代码可靠性、提高代码的重用性。 一、设计模式...

    Java设计模式之策略模式

    在"Java设计模式之策略模式"中,我们可能会看到一个模拟鸭子行为的例子,即著名的"鸭子模拟器"。在这个例子中,有不同类型的鸭子(如红头鸭、模型鸭等),每种鸭子的叫声、游泳和飞行行为可能不同。我们可以使用策略...

    java设计模式程序源代码

    Java设计模式是软件工程中的一种最佳实践,它提供了一种在特定情况下解决常见问题的模板。这些模式在软件开发中被广泛使用,因为它们能够使代码更可读、可维护和可扩展。在这个名为"java设计模式程序源代码"的压缩包...

    设计模式之策略模式Java实现和类设计图

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常涉及定义一系列算法,将每个算法封装到具有共同接口的独立类中,使得它们可以相互替换。这样做的主要好处是算法的变化不会影响...

    Java常用设计模式例子

    以JAVA为例,汇总了十几种常用的设计模式,包括了:单例模式、工厂模式、建造者模式、适配器模式、装饰器模式、外观模式、命令模式、观察者模式、状态模式、策略模式、模板方法模式等。仅供学习使用。 相关文章请看...

    Java策略模式+案例

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式允许我们定义一组算法或策略,并将每个策略封装为一个类,使得它们可以互换,而不会影响到客户端代码。这种模式的核心在于"策略",...

    java设计模式之策略模式

    此外,通过比较不使用策略模式和使用策略模式的小例子,可以帮助初学者更好地理解这种设计模式如何提高代码的可维护性和可扩展性。在学习过程中,你可以结合这些资源深入理解策略模式,并尝试在自己的项目中应用这一...

    java设计模式--策略模式

    策略模式是Java设计模式中的一种行为模式,它允许在运行时选择算法或策略,从而提供了更大的灵活性。在HeadFirst的《设计模式》一书中,第一章深入浅出地讲解了这一模式,通过实例帮助读者理解其核心概念和应用场景...

    23种Java设计模式和15种J2EE设计模式.pdf

    在深入探讨《23种Java设计模式和15种J2EE设计模式》这一主题之前,我们首先需要明确设计模式的概念及其在软件工程中的重要性。设计模式是一种在特定情境下解决问题的模板,它描述了在软件设计中遇到的问题以及解决...

    JAVA设计模式之禅+源代码.rar

    《JAVA设计模式之禅》是一本深入浅出地讲解JAVA设计模式的书籍,结合了中国的古典故事,使得抽象的设计模式概念变得生动形象,易于理解。设计模式是软件工程中的重要概念,它们是针对常见问题的解决方案,经过时间和...

    Java设计模式-策略模式

    总结来说,Java设计模式中的策略模式是一种非常实用的设计模式,它允许我们在运行时选择和改变算法,提高了代码的可维护性和灵活性。通过观看厉风行老师的教程,你可以深入理解策略模式的原理,并将其运用到实际项目...

    java策略模式示例.zip

    Java策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常涉及到定义一系列算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户。这个"java策略模式示例....

Global site tag (gtag.js) - Google Analytics