文章标题设计模式第一个:“策略模式(Strategy Pattern)
2016-05-17 22:59
453 查看
本实例是Head First的第一个鸭子实例
// abstract Duck类的代码 public abstract class Duck { FlyBehavior flyBehavior; QuackBehavior quackBehavior; public Duck() { // TODO Auto-generated constructor stub } public abstract void display() ; public void performFly() { flyBehavior.fly(); } public void performQuack() { quackBehavior.quack(); } public void swim() { System.out.println("all ducks float ,even decoys"); } } // 此处是fly()的抽象类,及其两个implements抽象类的class public interface FlyBehavior { void fly() ; } public class FlyNoWay implements FlyBehavior { @Override public void fly() { // TODO Auto-generated method stub System.out.println("鸭子不会飞"); } } public class FlyWithWings implements FlyBehavior { @Override public void fly() { // TODO Auto-generated method stub System.out.println("实现鸭子飞行"); //实现fly()方法 } } // 此处是quack()的抽象类,及其两个implements抽象类的class public interface QuackBehavior { void quack(); } public class Quack implements QuackBehavior { @Override public void quack() { // TODO Auto-generated method stub System.out.println("鸭子呱呱叫"); } } public class MuteQuack implements QuackBehavior { @Override public void quack() { // TODO Auto-generated method stub System.out.println("不会叫"); } } public class Squeak implements QuackBehavior { @Override public void quack() { // TODO Auto-generated method stub System.out.println("鸭子吱吱叫"); } } //实例化Duck public class MallardDuck extends Duck { public MallardDuck() { // TODO Auto-generated constructor stub //实现具体的Duck类 quackBehavior=new Quack(); //实现具体的叫 flyBehavior=new FlyWithWings(); //实现具体的飞 } @Override public void display() { // TODO Auto-generated method stub System.out.println("Im a real Mallard duck"); } } //测试类 public class MiniDuckSimulator { public static void main(String[] args) { // TODO Auto-generated method stub Duck duck=new MallardDuck(); //生成实现 duck.performFly(); //调用飞行方法 duck.performQuack(); //调用叫的方法 } }
相关文章推荐
- wireshark
- leetcode_c++:Search in Rotated Sorted Array(033)
- java Serializable
- php的session可以自定义处理机制哦
- AngularJs(三) deployd 服务的使用
- HDU4738 Caocao's Bridges 无向图的桥
- 软件开发方法
- 百度相册宣布关闭
- 百度相册宣布关闭
- WordPress插件 Foxlogin 连接腾讯QQ与新浪微博接入登录[v4.0]
- 学习日记1
- c++对象导出到lua
- C++中getline函数用法(修正调试ok)
- 作业8 单元测试练习
- hdoj2034
- WordPress插件 WP Rocket 缓存火箭加速优化插件 [更新至v2.7.4]
- Tornado X MVC
- MikuMikuDance中对于Local和Global旋转方式的特殊处理
- 《快学Scala》第九章习题解答
- postgresql.conf配置