注册 登录
编程论坛 J2EE论坛

Strategy模式的一个例子--2007上半年年软设下午卷试题7

Ethip 发布于 2008-05-17 22:37, 964 次点击
下周六就要考试了,发个帖。暂时离开下,要去抱抱佛脚哦!
源代码,自己完成的,还没有对答案!运行了下,没有问题。就不想去看答案了!
更加详细的源码,考完后再发!设计模式听起来很吓人,实际上,自己动手了,就好说!!呵呵!!
/* 原题见附件 */
/* Strategy.java */
package pattern;
interface FlyBehavior {
 public void fly();
}
interface QuackBehavior {
 public void quack();
}
class FlyWithWings implements FlyBehavior{
 public void fly(){
  System.out.println("使用翅膀飞行~~~");
 }
}
class FlyNoWay implements FlyBehavior {
 public void fly(){
  System.out.println("不能飞行~~~");
 }
}
class Quack implements QuackBehavior{
 public void quack(){
  System.out.println("发出\'嘎嘎\'声!~~~");
 }
}
class Squeak implements QuackBehavior {
 public void quack(){
  System.out.println("发出与空气与橡皮摩擦声!~~~");
 }
}
class QuackNoWay implements QuackBehavior {
 public void quack(){
  System.out.println("不能发声!~~~");
 }
}
abstract class Duck{
 protected FlyBehavior flyBehavior;
 protected QuackBehavior quackBehavior;
 public void fly(){
 }
 public void quack(){
 }
 public abstract void display();
}
class RubberDuck extends Duck{
 public RubberDuck(){
  flyBehavior = new FlyNoWay();
  quackBehavior = new Squeak();
 }
 public void display() {
  System.out.println("我是RubberDuck!~~~");
  flyBehavior.fly();
  quackBehavior.quack();
 }
}
public class Strategy {
 public static void main(String[] args) {
  (new RubberDuck()).display();
 }
}
附件:
[url=http://hi.bccn.net/batch.download.php?aid=495]2007年上半年软件设计师下午试卷.rar[/url]
[时间:2008-5-17 22:54 - 下载次数:0]
2 回复
#2
beniao2008-05-25 22:50
Head First 设计模式
#3
Ethip2008-05-26 15:30
回复 2# beniao 的帖子
a good book
1