Head First 设计模式学习笔记(一) 策略模式

面向接口编程


package com.ch;
/**
 * 鸭子接口类
 * @author test
 */
public abstract class Duck {
	
	FlyBehavior flyBehavior;
	QuackBehavior quackBehavior;

        public void setFlyBehavior(FlyBehavior fb) {
             flyBehavior = fb;
        }

        public void setQuackBehavior(QuackBehavior qb) {
             quackBehavior = qb;
        }

       void performQuack(){
		quackBehavior.quack();
	}
	
	void performFly(){
		flyBehavior.fly();
	}
	
	 void swim(){//游泳
		 System.out.println("游泳ing...");
	 }

	 abstract void display();  //展示外观

}
 
package com.ch;

public interface FlyBehavior {

	void fly(); //飞行动作
}
 
package com.ch;

public interface QuackBehavior {

	void quack(); //叫声
}
 
package com.ch;

public class FlyNoWay implements FlyBehavior{

	@Override
	public void fly() {
		
		System.out.println("我是不会飞的鸭子");
	}
}
 
package com.ch;

public class FlyWithWings implements FlyBehavior{

	@Override
	public void fly() {
		System.out.println("我是会飞的鸭子");
	}
}
 
package com.ch;

public class Quack implements QuackBehavior{

	@Override
	public void quack() {
		System.out.println("呱呱叫");
		
	}

}
 
package com.ch;

public class Squeak implements QuackBehavior{

	@Override
	public void quack() {
		
		System.out.println("吱吱叫");
		
	}

}
package com.ch;

public class MallardDuck extends Duck {
	
	public MallardDuck() {
		quackBehavior = new Quack();
		flyBehavior = new FlyWithWings();
		}

	@Override
	void display() {
		System.out.println("....");
	}
}

猜你喜欢

转载自chxiaowu.iteye.com/blog/1233465