java设计模式 (二):duck游戏

duck游戏

//鸭子抽象类
public abstract class duck1 {

	public duck1() {
	}

	FlyBehaviro myFlyBehavior;

	QuackBehavior myQuackBehavior;

	public void fly() {

		myFlyBehavior.fly();

	}

	public void quack() {

		myQuackBehavior.QuackBehavior();

	}

	public abstract void display();

}


//定义飞行接口
interface FlyBehaviro {

	public void fly();

}

//定义叫声接口
interface QuackBehavior {

	public void QuackBehavior();

}

//飞行类
class flyNoWay implements FlyBehaviro {
	@Override
	public void fly() {
		System.out.println(" i can not fly");
	}
}

class canfly implements FlyBehaviro {
	@Override
	public void fly() {
		System.out.println("i can fly");
	}
}

//叫声类
class waquack implements QuackBehavior {
	@Override
	public void QuackBehavior() {
		System.out.println("wawa");
	}
}

class noquack implements QuackBehavior {
	@Override
	public void QuackBehavior() {
		System.out.println("......");
	}
}

class guquack implements QuackBehavior {
	@Override
	public void QuackBehavior() {
		System.out.println("guagua");
	}
}

//绿鸭
class greenduck extends duck1 {
	public greenduck() {
		myFlyBehavior = new canfly();
		myQuackBehavior = new guquack();
	}

	@Override
	public void display() {
		System.out.println("i am greenduck");
	}

}

//塑料鸭子
class plasticduck extends duck1 {
	public plasticduck() {
		myFlyBehavior = new flyNoWay();
		myQuackBehavior = new noquack();
	}

	@Override
	public void display() {
		System.out.println("no color duck");
	}

}

这里定义一个鸭子类

public class duck {
	public static void main(String[] args) {
//		绿鸭
		duck1 mall = new greenduck();
		mall.display();
		mall.fly();
		mall.quack();
		
//		塑料鸭子
		duck1 pla = new plasticduck();
		pla.display();
		pla.fly();
		pla.quack();	
	}
}

运行结果:

i
am greenduck
i can fly
guagua
no color duck
i can not fly

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值