引用一下某大的文章:
设计模式中的状态模式相对比较简单,简单的说就是对某个对象的状态进行管理 .对象的状态如果的多的话,假如没有对其进行管理,极易造成管理混乱。从而使系 统难以维护,所以State模式的意图就是将与状态有关的处理逻辑分散到代表对象状态的各个类中。这样的模式应用在用于多状态的系统中,如游戏开发者就经 常用到这种状态模式。
举例,一个玩家释放某个技能会出现buff状态也可能出现debuff状态,那么我们使用一个manager来对buff和debuff进行相应的管理,这样的模式就是state模式。
1.Player.java
package com.xuyi.state;
public class Player {
private String buff;
private String debuff;
BuffManager buffManager = new BuffManager(this);
public void use_skill_1(){
buffManager.skill_1();
System.out.println("使用技能1----获得buff:"+buff+" 获得debuff:"+debuff);
}
public void use_skill_2(){
buffManager.skill_2();
System.out.println("使用技能2----获得buff:"+buff+" 获得debuff:"+debuff);
}
public String getBuff() {
return buff;
}
public void setBuff(String buff) {
this.buff = buff;
}
public String getDebuff() {
return debuff;
}
public void setDebuff(String debuff) {
this.debuff = debuff;
}
}
2.BuffManager.java
package com.xuyi.state;
public class BuffManager {
private static final String buff_state_1="回春术";
private static final String buff_state_2="魔法盾";
private static final String debuff_state_1="燃烧";
private static final String debuff_state_2="虚弱";
private Player player;
public BuffManager(Player player){
this.player=player;
}
public void skill_1(){
player.setBuff(buff_state_1);
player.setDebuff(debuff_state_1);
}
public void skill_2(){
player.setBuff(buff_state_2);
player.setDebuff(debuff_state_2);
}
}
3.Test.java
package com.xuyi.state;
//state模式-状态模式:简单的说就是对某个对象的状态进行管理
public class Test {
public static void main(String[] args) {
Player player = new Player();
player.use_skill_1();
player.use_skill_2();
}
}