Head First_设计模式_策略模式

package Strategy_Pattern;

/*
 * head first 设计模式  完整代码练习
 * 
 * 1.策略模式(封装算法,让算法之间可以相互代替。<好处:使得算法的变化独立于使用算法的客户。>)
 * 
 * 
 * */

public abstract class Strategy_Pattern_Duck {

	FlyBehaver flyBehaver;
	EatDifference eatDifference;

	// 习惯写空的构造方法
	public Strategy_Pattern_Duck() {
	};

	// 用接口来实现具体的算法
	public void flyPerform() {
		flyBehaver.fly();
	}

	public void eatPerform() {
		eatDifference.eat();
	}

}
package Strategy_Pattern;

interface FlyBehaver {
	// 飞行的方法
	void fly();
}

class FlywhitB implements FlyBehaver {

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		System.out.println("FlywhitB");
	}

}

class FlywhitA implements FlyBehaver {

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		System.out.println("FlywhitA ");
	}

}

package Strategy_Pattern;

public interface EatDifference {

	void eat();
}

class EatApple implements EatDifference {

	@Override
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("this is duck eatting Apple!");
	}

}

class EatBanana implements EatDifference {

	@Override
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("this is duck eatting banana!");
	}

}

package Strategy_Pattern;

public class WhiteDuck extends Strategy_Pattern_Duck {
	public WhiteDuck() {

		// 具体的whiteDuck有具体的eat和fly的方法
		flyBehaver = new FlywhitB();
		eatDifference = new EatApple();
	}

	public void sayHello() {
		System.out.println("这是WhiteDuck!");
	}
}

package Strategy_Pattern;

public class Test {

	public static void main(String arg[]) {
		Strategy_Pattern_Duck d = new WhiteDuck();
		d.eatPerform();
		d.flyPerform();
		((WhiteDuck) d).sayHello();

	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值