设计模式- 策略模式
2016-03-17 11:28
316 查看
定义:定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
多用组合,少用继承。
抽象出那些经常需要改变的内容,独立成接口。
例如
//抽象类 角色
public abstract Character{
private WeaponBehavfor behavfor;
public void fight();
public void setWeaponBehavfor(WeaponBehavfor w);
}
//国王继承与角色
public class King extends Character{
public King(){
behavfor=new SwordBehavior();
}
public void attack(){
behavfor.userWeapon();
}
public void setWeaponBehavfor(WeaponBehavfor w){
behavfor=w;
}
}
//武器接口 每个角色都可用多种武器。可以随时进行切换
public interface WeaponBehavfor{
public void userWeapon();
}
public class SwordBehavior extends WeaponBehavfor{
public void userWeapon(){
System.out.println("宝剑");
}
}
public class KnifeBehavior extends WeaponBehavfor{
public void userWeapon(){
System.out.println("匕首");
}
}
多用组合,少用继承。
抽象出那些经常需要改变的内容,独立成接口。
例如
//抽象类 角色
public abstract Character{
private WeaponBehavfor behavfor;
public void fight();
public void setWeaponBehavfor(WeaponBehavfor w);
}
//国王继承与角色
public class King extends Character{
public King(){
behavfor=new SwordBehavior();
}
public void attack(){
behavfor.userWeapon();
}
public void setWeaponBehavfor(WeaponBehavfor w){
behavfor=w;
}
}
//武器接口 每个角色都可用多种武器。可以随时进行切换
public interface WeaponBehavfor{
public void userWeapon();
}
public class SwordBehavior extends WeaponBehavfor{
public void userWeapon(){
System.out.println("宝剑");
}
}
public class KnifeBehavior extends WeaponBehavfor{
public void userWeapon(){
System.out.println("匕首");
}
}
相关文章推荐
- 曲线抽稀方法罗列
- 多线程中的sleep()
- Windows使用Hexo + Github Pages搭建自己的博客
- 【Browser】浏览器横屏时程序崩溃
- java所有类型的参数传递都是“值传递”
- Rails中使用geometry格式的数据
- Elasticsearch资料
- JavaEE 学习笔记
- 常用的几个开源 API网关管理系统
- android 5.1 kernel 编译模块
- Java day05 单例设计模式
- Android TextView中显示图片的4种方式
- Java读书笔记二(封装类)
- python ——使字典按添加顺序输出
- IntelliJ IDEA 15在线激活码
- Android 手势锁
- js中apply使用方法小议
- Hibernate之Hibernate+EHCache配置二级缓存实战
- Android Studio导出JavaDoc出现编码问题
- 分析Linux kernel exception-基础篇