您的位置:首页 > 其它

文章标题设计模式第一个:“策略模式(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();                   //调用叫的方法
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: