首页 > 学院 > 开发设计 > 正文

策略模式学习1

2019-11-08 02:10:27
字体:
来源:转载
供稿:网友

策略模式学习1:

从简单的模拟鸭子应用做起:

SimUDuck.游戏中会出现各种鸭子,一边游泳,一边呱呱叫。

首先通常的设计,设计一个鸭子超类,所有的鸭子都会呱呱叫,也会游泳,由超类负责处理这部分的行为实现代码。

代码分别如下:

这是一个鸭子超类

public abstract class Duck {		public void quack() {		System.out.PRintln("呱呱叫...");	}	public void swim() {		System.out.println("游来游去...");	}		abstract void display();// 每种鸭子的外观更不同,所以设定为抽象的		/*	 * 某一天需求变了,某些鸭子要会飞。	 * 因此设计想到在超类中加入了这个方法,那么所有的鸭子都具备了会飞的行为。	 */	void fly(){		System.out.println("飞来飞去...");	}		//鸭子的其他方法}鸭子子类们:

/** * 绿头鸭 * @author Administrator * */public class MallardDuck extends Duck {	@Override	void display() {		System.out.println("绿头鸭..");	}}
/** * 红头鸭 * @author Administrator * */public class RedheadDuck extends Duck {	@Override	void display() {		System.out.println("红头鸭...");	}}
/** * 橡皮鸭 * @author Administrator * */public class RubberDuck extends Duck {		@Override	void display() {		System.out.println("橡皮鸭...");	}		/*	 * 橡皮鸭子不会呱呱叫	 * 但是问题来了,这个橡皮鸭子会飞?	 * 那设计人员会说:一样覆盖掉就好	 */	@Override	public void quack() {		//覆盖超类的呱呱叫		System.out.println("吱吱叫...");	}		@Override	void fly() {		//覆盖,变成什么事儿都不做		;	}		}这样设计就是最通常的设计了,如果需求不变,那这样设计就没有什么缺点了。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表