package com.example.vicky.strategypattern.StrategyPattern;
/**
* Created by Vicky on 2016/10/23.
*/
//封装不同武器攻击行为
public class Behavior {
public void attack(int type){
if (type==1){
//实现用法杖施法
System.out.print("用法杖施法");
}else if (type==2){
//实现用弓箭射击
System.out.print("用弓箭射");
}else if (type==3){
//实现用剑砍
System.out.print("用剑砍");
}
}
}
Behavior behavior=new Behavior();
behavior.attack(1);
package com.example.vicky.strategypattern.StrategyPattern;
/**
* Created by Vicky on 2016/10/23.
*/
//攻击的接口,为了使不同的攻击方式实现该接口,达到它们之间相互替换的效果
public interface Attack {
public void attack();
}
package com.example.vicky.strategypattern.StrategyPattern;
import android.util.Log;
/**
* Created by Vicky on 2016/10/23.
*/
//法师的行为
public class WizardBehvior implements Attack{
@Override
public void attack() {
//实现用法杖施法
Log.d("YWK","用法杖施法");
}
}
package com.example.vicky.strategypattern.StrategyPattern;
import android.util.Log;
/**
* Created by Vicky on 2016/10/23.
*/
//弓箭手的行为
public class ArcherBehavior implements Attack{
@Override
public void attack() {
//实现用弓箭射击
Log.d("YWK","用弓箭射");
}
}
package com.example.vicky.strategypattern.StrategyPattern;
import android.util.Log;
/**
* Created by Vicky on 2016/10/23.
*/
//勇士的行为
public class WarriorsBehavior implements Attack{
@Override
public void attack() {
//实现用剑砍
Log.d("YWK","用剑砍");
}
}
package com.example.vicky.strategypattern.StrategyPattern;
/**
* Created by Vicky on 2016/10/23.
*/
//封装不同武器攻击行为
public class Behavior {
public Behavior(Attack attackBehavoir){
attackBehavoir.attack();
}
}
Behavior behavior=new Behavior(new ArcherBehavior());
策略模式核心是定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决了在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。
1404



被折叠的 条评论
为什么被折叠?



