标题:设计模式学习之路---Strategy(《Strategy模式的一个例子》改进)
取消只看楼主
Ethip
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:771
专家分:0
注 册:2008-1-18
 问题点数:0 回复次数:5 
设计模式学习之路---Strategy(《Strategy模式的一个例子》改进)
说明:之前的那个source只是完成了答案,他只是说明strategy模式的一种分析过程(详见附件的试卷中的解释)!改进后的source从java代码的完整性和可读性上做了一些修饰。但是设计模式的学习是路漫漫的,希望自己能坚持到底!给自己加油先!!!
/* Strategy */
import java.util.Scanner;
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("偶的发声特征:偶啊,发出\'嘎嘎\'声,不怎么好听!5555555~~~");
 }
}
class Squeak implements QuackBehavior {
 public void quack(){
  System.out.println("偶的发声特征:偶啊,发出与空气与橡皮摩擦声!~~~");
 }
}
class QuackNoWay implements QuackBehavior {
 public void quack(){
  System.out.println("偶的发声特征:偶啊,不能发声,是最可怜的啦,555555555~~~");
 }
}
abstract class Duck{
 protected FlyBehavior flyBehavior;
 protected QuackBehavior quackBehavior;
 public void fly(){
  flyBehavior.fly();
 }
 public void quack(){
  quackBehavior.quack();
 }
 public abstract void display();
}
class OneDuck extends Duck{
 private String duckName;
 public OneDuck(String duckName){
  this.duckName = duckName;
  flyBehavior = new FlyNoWay();
  quackBehavior = new Squeak();
 }
 public void display() {
  System.out.println("偶是 " + duckName + "~~~");
  flyBehavior.fly();
  quackBehavior.quack();
 }
}
public class Strategy {
 private static String duckName = "";
 public static void MainMenu(){
  
  System.out.println("@@@@@@@@@@@@@@@@@@@");
  System.out.println("1.RubberDuck");
  System.out.println("2.CottonoDuck");
  System.out.println("3.RedHeadDuck");
  System.out.println("4.MallardDuck");
  System.out.println("@@@@@@@@@@@@@@@@@@@");
  System.out.println();
  System.out.println("请选择一种鸭子种类");
  Scanner reader = new Scanner(System.in);
  int i = reader.nextInt();
  switch(i){
  case 1:
   duckName = "RubberDuck";
   break;
  case 2:
   duckName = "CottonoDuck";
   break;
  case 3:
   duckName = "RedHeadDuck";
   break;
  case 4:
   duckName = "MallardDuck";
   break;
  default:
   break;
  }
  if( i > 4 || i < 1)
   System.out.println("你的选择错误!");
  else
   (new OneDuck(duckName)).display();
 }
 public static void main(String[] args) {
  MainMenu();
 }
}
搜索更多相关主题的帖子: Strategy 模式 例子 void public 
2008-05-20 21:40
Ethip
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:771
专家分:0
注 册:2008-1-18
得分:0 
觉得J2SE这块帖子极少啊,最近也只看见hanzhu3366有几贴,刚刚都把“新帖”翻了个遍,6页多啊!!!J2se的帖子就几篇,所以特来顶一下!!!
这好像是个普遍的问题,就连matrix,javaeye那样专业的java论坛,最近3,4天也很少更新了!!!
自己继续奋斗,相信不会寂寞,因为大伙的存在!!
2008-05-20 21:57
Ethip
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:771
专家分:0
注 册:2008-1-18
得分:0 
回复 2# 的帖子
是啊!我在上一篇日志中说过,试题在日志的附件里!

[[it] 本帖最后由 Ethip 于 2008-5-20 22:02 编辑 [/it]]
2008-05-20 21:59
Ethip
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:771
专家分:0
注 册:2008-1-18
得分:0 
回复 5# 的帖子
是5.24这次考试吗?
2008-05-20 22:07
Ethip
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:771
专家分:0
注 册:2008-1-18
得分:0 
回复 7# 的帖子
哇哈哈!!!
我也是抱定了必挂的信心啊!估计在40分左右,但45是达不到的!所以还是很乐观,因为知道自己的基础非常不扎实,这次硬着头皮去啦!
还希望你能有好运!!!
Good luck to sunkaidong!
2008-05-20 22:22
Ethip
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:771
专家分:0
注 册:2008-1-18
得分:0 
回复 9# 的帖子
确实,下午题虽然只有几个题,但这些才算是软件工程的实质!!!做这些题目才有意思,但是困难也是相当的不小啊!算法题目我肯定是最后才去看的!软肋啊!!!
2008-05-20 22:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-215319-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.612995 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved