学习设计模式之State模式(状态模式)

引用一下某大的文章:

   设计模式中的状态模式相对比较简单,简单的说就是对某个对象的状态进行管理 .对象的状态如果的多的话,假如没有对其进行管理,极易造成管理混乱。从而使系 统难以维护,所以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();
	}
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值