例子目录结构:
代码:
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设计模式之策略模式 内含策略模式讲解ppt 自己根据ppt写了一个小例子 先不用策略模式 后用策略模式 形成了鲜明对比 对初学者很有用
代码为博客的例子,详细讲解参考:http://blog.csdn.net/lmj623565791/article/details/24116745 有问题请留言
设计模式--工厂模式java例子
自己编写的设计模式之策略模式的小例子!
用java写的几个常用的设计模式。包括 工厂模式、适配器模式、桥接模式、建造者模式、命令模式、组合模式、装饰模式、外观模式、工厂方法模式、迭代器模式、观察者模式、代理模式、单例模式、状态模式、策略模式、...
创建型模式,共五种:工厂方法模式、抽象工厂模式、...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
以简单、诙谐幽默的例子讲述面向对象设计中的23中设计模式。策略模式、观察者模式、单例模式、工厂方法、抽象工厂、迭代器模式、状态模式、适配器模式、装饰者模式、组合模式、原型模式、模板方法……
java 设计模式 策略模式 这是一个不错的例子,一看就会了
书中采用实用、恰当的例子,指导读者用模式解决普通的编程问题,并且解释现代软件设计模式的优越性。本书适用于学习面向中对象设计和设计模式的学生、程序员以及从事软件开发的人士。 本书要点包括: 对象、封装和...
策略模式、观察者模式、装饰模式、适配器模式、单例模式、工厂方法模式、门面模式,java语言实现的例子。
策略者的模式简单,易懂,可以到我官方博客,看例子的详细介绍,我的博客:http://blog.csdn.net/baozhiyao234/archive/2010/07/17/5742676.aspx
设计模式(超级详细) 内容简介 有感于设计模式在日常开发中的重要性,同时笔者也自觉对设计模式小有心得,故笔者 *写二十三种设计模式的简单例子、 并整理二十三种设计模式的理论局部,综合汇总成这份Java设计模式〔...
自己编写的一个策略模式的简单例子,可以用于学习参考,同时本例子中还使用了泛型。导入到Eclipse中直接可以运行。...我还写了一篇博文是和本程序相对应的,叫“设计模式之策略模式”,大家感兴趣的可以去看看!
非常生动的设计模式讲解。给个例子先: 第 1 章 策略模式【Strategy Pattern】 刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题, 嘿,还别说,真是解决了大问题,搞到最后是...
行为型特点:怎样合理的设计对象之间的交互通信,以及怎样合理的为对象分配职 结构型特点:主要用于处理类或对象的组合 Java jdk中使用了哪些设计模式 1.单例2.静态工厂3.工厂方法4.抽象工厂5.构造者6.原型7.适配器...
后端同学在开发过程中...这里给出策略模式的例子,以汉堡打折为原型设计,存在优惠券、买一送一、打折、免费等场景的时候,该如何精简代码? 对比枚举策略与简单工厂+策略模式的不同使用,抛砖引玉,引发你更多的思考
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),详细介绍了面向对象开发常用模式之一-策略模式,详解了其原理,并经过详细的例子进行演示,通过一个完整的代码演示,让你完全理解策略模式思想,资源好不好下了就知道,感觉不好,亏了你的分,骂...