策略模式-定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。策略模式有点像调包计和偷梁换柱。
设计模式就是为了适应变化那些大师而想起来的,能适应变化的软件才能长命,人也一样,只有适应外界变化,方可生存。
package pattern;
public abstract class Duck {
FlyBehavior flyBehavior;
QuackBehavior quackBehavior;
public Duck() {
}
public abstract void display();
public void performFly() {
flyBehavior.fly();
}
public void performQuack() {
quackBehavior.quack();
}
public void setFlyBehavior(FlyBehavior fb) {
flyBehavior = fb;
}
public void setQuackBehavior(QuackBehavior qb) {
quackBehavior = qb;
}
public void swim() {
System.out.println("All ducks float,even decoys!");
}
}
interface FlyBehavior {
public void fly();
}
class FlyWithWings implements FlyBehavior {
public void fly() {
System.out.println("I am flying!!");
}
}
class FlyNoWay implements FlyBehavior {
public void fly() {
System.out.println("i can not flying !!");
}
}
class FlyRocketPowered implements FlyBehavior {
public void fly() {
System.out.println("i am flying with a rocket!");
}
}
interface QuackBehavior {
public void quack();
}
class Quack implements QuackBehavior {
public void quack() {
System.out.println("Quack");
}
}
class MuteQuack implements QuackBehavior {
public void quack() {
System.out.println("<<>Silence>");
}
}
class Squeak implements QuackBehavior {
public void quack() {
System.out.println("Squeak");
}
}
class MallardDuck extends Duck {
public MallardDuck() {
quackBehavior = new Quack();
flyBehavior = new FlyWithWings();
}
public void display() {
System.out.println("i am a real Mallard duck");
}
}
class ModelDuck extends Duck {
public ModelDuck() {
flyBehavior = new FlyNoWay();
quackBehavior = new Quack();
}
public void display() {
System.out.println("i am a model duck");
}
}
class MiniDuckSimulator {
public static void main(String[] args) {
Duck mallard = new MallardDuck();
mallard.performQuack();
mallard.performFly();
Duck model = new ModelDuck();
model.performFly();
model.performQuack();
model.setFlyBehavior(new FlyWithWings());
model.setQuackBehavior(new Squeak());
model.performFly();
model.performQuack();
}
}
分享到:
相关推荐
又名: Head First Design Patterns 作者: (美)弗里曼(Freeman,E.) 副标题: Head First Design Patterns 简介 ······ 你不想重新发明车轮(或者更差的是,没有充气车胎的轮子),所以你从设计模式中寻求...
Head First Design Patterns 中文版 带目录 设计模式经典书籍
深入浅出设计模式(Head First Design Patterns)完整版,由本人精心整理网上的JPG版制作成PDF版供各位编程爱好者下载学习, 这部模式教程诙谐幽默,寓教于乐,实乃菜鸟成才必备之选。共分为11个压缩包,绝对的物有所...
Head First Design Patterns(中文版)设计模式 java。 Head First Design Patterns(中文版) 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除 设计模式 ...
head first design patterns-head first 设计模式的英文原版;高清英文原版,非扫描
《HeadFirst Design Patterns》是设计模式领域中一本非常受欢迎的入门书籍,以其独特的教学方式深受读者喜爱。设计模式是软件工程中的一种最佳实践,它总结了在特定上下文中解决常见问题的经验和方法,使得开发者...
深入浅出设计模式(Head First Design Patterns)完整版,由本人精心整理网上的JPG版制作成PDF版供各位编程爱好者下载学习,这部模式教程诙谐幽默,寓教于乐,实乃菜鸟成才必备之选。共分为9个压缩包,绝对的物有所值...
《Head First Design Patterns》是一本深入浅出介绍设计模式的图书,由Eric Freeman、Elisabeth Freeman、Bert Bates和Kathy Sierra联合编写。本书结合认知科学原理和神经生物学研究,采用引导式教学方法,通过故事...
深入浅出设计模式(Head First Design Patterns)完整版,由本人精心整理网上的JPG版制作成PDF版供各位编程爱好者下载学习, 这部模式教程诙谐幽默,寓教于乐,实乃菜鸟成才必备之选。共分为11个压缩包,绝对的物有所...
### Head First Design Patterns 英文版 #### 书籍概述 《Head First Design Patterns》是一本在软件开发...如果你正在寻找一本既有趣又能深刻教授设计模式知识的书籍,《Head First Design Patterns》绝对值得一读。
《HeadFirst设计模式源代码》压缩包包含了作者Eric Freeman和Elisabeth Robson在《HeadFirst设计模式》一书中所讲解的各种设计模式的实例代码。这本书是面向初学者的,用直观、生动的方式介绍了设计模式的概念,使得...
3装饰者模式装饰对象 4工厂模式烘烤OO的精华 5单件模式独一无二的对象 6命令模式封装调用 7适配器模式与外观模式随遇模式 8模板方法模式封装算法 9选代器与组合模式管理良好的集合 10...
3. **深度解析**:对于每一种设计模式,《Head First Design Patterns》都进行了详尽的分析,包括模式的动机、结构、优缺点以及适用场景等。 - 比如在解释装饰者模式时,书中详细探讨了何时使用该模式、它的基本...
《Head First Design Patterns》是设计模式领域中一本非常知名的书籍,尤其适合初学者入门。这本书以其独特的视觉风格和易于理解的讲解方式,帮助读者深入理解设计模式的核心概念和实际应用。Part2部分主要涵盖了...
这本书的部分章节,即"Pages from Head First Design Patterns (英文高清版)_part1.rar",可能涵盖了以下几个主要的设计模式: 1. **工厂模式**:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,...
软件设计模式中文版 &head; first python 。
HeadFirst Design Pattern in C#
《Head First Design Patterns》是一本深受开发者喜爱的设计模式教程,英文版的影印版本提供了清晰易读的阅读体验。设计模式是软件工程中的一种最佳实践,它总结了在特定上下文中解决问题的常见方法,旨在提高代码的...
Head.First-Design.Patterns.深入浅出-设计模式.part1.rar Head.First-Design.Patterns.深入浅出-设计模式.part2.rar 此文档是分批压缩上传的 请全部下载后一起解压 本书荣获2005年第十五届Jolt通用类图书震撼...