最近学习了策略模式,看到了一篇非常好的博客,学习了一下并写了一个简单的代码。
博客地址:http://www.cnblogs.com/justinw/archive/2007/02/06/641414.html
代码如下:
Fly接口:
package com.strategy;
public interface FlyBehavior {
public void fly();
}
package com.strategy;
public class FlywithWings implements FlyBehavior{
public void fly(){
System.out.println("fly with wings.");
}
}
package com.strategy;
public class FlynoWay implements FlyBehavior {
public void fly(){
System.out.println("fly no way.");
}
}
鸭子类:
package com.strategy;
public class Duck {
FlyBehavior fb;
public void setFlayperform(FlyBehavior fb){
this.fb = fb;
}
public void display(){
System.out.println("Duck");
}
public void Flyperform(){
fb.fly();
}
}
package com.strategy;
public class LarryDuck extends Duck{
public LarryDuck(){
this.setFlayperform(new FlywithWings());
}
public void display(){
System.out.println("larry duck");
}
}
package com.strategy;
public class PageDuck extends Duck{
public PageDuck() {
this.setFlayperform(new FlynoWay());;
}
public void display(){
System.out.println("larry duck");
}
}
测试:
package com.strategy;
public class Main {
public static void main(String[] args){
Duck larryduck = new LarryDuck();
larryduck.Flyperform();
Duck pageduck = new PageDuck();
pageduck.Flyperform();
}
}