`
jiapumin
  • 浏览: 341565 次
  • 性别: 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例子

    Java常用设计模式例子

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

    java设计模式之策略模式

    java设计模式之策略模式 内含策略模式讲解ppt 自己根据ppt写了一个小例子 先不用策略模式 后用策略模式 形成了鲜明对比 对初学者很有用

    Java 设计模式 策略模式

    代码为博客的例子,详细讲解参考:http://blog.csdn.net/lmj623565791/article/details/24116745 有问题请留言

    设计模式--工厂模式java例子

    设计模式--工厂模式java例子

    策略模式例子

    自己编写的设计模式之策略模式的小例子!

    设计模式例子(java版本)

    用java写的几个常用的设计模式。包括 工厂模式、适配器模式、桥接模式、建造者模式、命令模式、组合模式、装饰模式、外观模式、工厂方法模式、迭代器模式、观察者模式、代理模式、单例模式、状态模式、策略模式、...

    23种设计模式项目实例

    创建型模式,共五种:工厂方法模式、抽象工厂模式、...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    java设计模式之禅

    以简单、诙谐幽默的例子讲述面向对象设计中的23中设计模式。策略模式、观察者模式、单例模式、工厂方法、抽象工厂、迭代器模式、状态模式、适配器模式、装饰者模式、组合模式、原型模式、模板方法……

    F:\资料归档\java设计模式

    java 设计模式 策略模式 这是一个不错的例子,一看就会了

    设计模式精解 译者:熊节 程序员必看书籍之一 part2

    书中采用实用、恰当的例子,指导读者用模式解决普通的编程问题,并且解释现代软件设计模式的优越性。本书适用于学习面向中对象设计和设计模式的学生、程序员以及从事软件开发的人士。 本书要点包括: 对象、封装和...

    常用设计模式java实现

    策略模式、观察者模式、装饰模式、适配器模式、单例模式、工厂方法模式、门面模式,java语言实现的例子。

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

    策略者的模式简单,易懂,可以到我官方博客,看例子的详细介绍,我的博客:http://blog.csdn.net/baozhiyao234/archive/2010/07/17/5742676.aspx

    Java的23种设计模式疯狂Java总结.doc

    设计模式(超级详细) 内容简介 有感于设计模式在日常开发中的重要性,同时笔者也自觉对设计模式小有心得,故笔者 *写二十三种设计模式的简单例子、 并整理二十三种设计模式的理论局部,综合汇总成这份Java设计模式〔...

    策略模式的小例子

    自己编写的一个策略模式的简单例子,可以用于学习参考,同时本例子中还使用了泛型。导入到Eclipse中直接可以运行。...我还写了一篇博文是和本程序相对应的,叫“设计模式之策略模式”,大家感兴趣的可以去看看!

    java设计模式

    非常生动的设计模式讲解。给个例子先: 第 1 章 策略模式【Strategy Pattern】 刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题, 嘿,还别说,真是解决了大问题,搞到最后是...

    java设计模式选择题复习题.doc

    行为型特点:怎样合理的设计对象之间的交互通信,以及怎样合理的为对象分配职 结构型特点:主要用于处理类或对象的组合 Java jdk中使用了哪些设计模式 1.单例2.静态工厂3.工厂方法4.抽象工厂5.构造者6.原型7.适配器...

    Java策略模式的使用(枚举策略与简单工厂策略)

    后端同学在开发过程中...这里给出策略模式的例子,以汉堡打折为原型设计,存在优惠券、买一送一、打折、免费等场景的时候,该如何精简代码? 对比枚举策略与简单工厂+策略模式的不同使用,抛砖引玉,引发你更多的思考

    深入浅出设计模式(中文版电子版)

    5.9StrategyPattern(策略模式) 261 5.9.1定义 261 5.9.2现实例子——去机场的策略 263 5.9.3C#实例——排序方法 263 5.9.4Java实例——多格式输出 266 5.9.5优势和缺陷 272 5.9.6应用情景 272 5.10...

    策略模式-java

    策略模式(java),详细介绍了面向对象开发常用模式之一-策略模式,详解了其原理,并经过详细的例子进行演示,通过一个完整的代码演示,让你完全理解策略模式思想,资源好不好下了就知道,感觉不好,亏了你的分,骂...

Global site tag (gtag.js) - Google Analytics