java设计模式之—追美眉的技术:状态模式(State):同一个方法,根据不同的状态来执行不同的结果

对读者的要求:1、具备面向对象思想。2、对抽象类、接口有一定了解。

核心思想:同一个方法,根据不同的状态,表现出不同的结果。


案例一:MM的cry(),可以愉快的哭、高兴的哭、傻傻的哭等。


设计思路:

1、定义一个MmState抽象类,分别:cry()、smile()、say()三个方法;

2、定义MM的一系列状态的具体实现类,比如:MMHappyState、MMUnHappyState;

3、MM类定义mmCry()方法,入参MmState(传入一个MmState具体实现类)。

//1.定义MMStae抽象类
public abstract class MmState {
	public abstract void cry() ;//高兴的哭、激动的哭、痛苦的哭,等等
	public abstract void smile() ;//
	public abstract void say() ;//
}
//2.定义MMState的具体实现类
public class MMHappyState extends MmState {

	@Override
	public void cry() {
		System.out.println("*^_^* 开心的哭了");
	}

	@Override
	public void smile() {
		System.out.println("*^_^* 高兴的微笑");
	}

	@Override
	public void say() {
		System.out.println("*^o^* 愉快的说");
	}
}

//2.定义MMState的具体实现类
public class MMUnHappyState extends MmState{

	@Override
	public void cry() {
		System.out.println("`=_=` 伤心的哭了");
	}

	@Override
	public void smile() {
		System.out.println("-_- 伤心的傻笑起来");
	}

	@Override
	public void say() {
		System.out.println(")o(· 悲伤的说");
	}

}

//3.定义MM类,灵活根据不同的状态,执行同一个方法。
public class MM {
	
	//根据传入不同的状态,执行不同状态下的cry方法
	public static void mmCry(MmState state) {
		state.cry();
	}
	
	public static void main(String[] args) {
		mmCry(new MMHappyState());//传入开心的状态:就开心的哭
		mmCry(new MMUnHappyState());//传入不高兴的状态:就伤心的哭
	}
}

运行结果:

*^_^* 开心的哭了
`=_=` 伤心的哭了

总结:


1、以上案例主要讲述,命令模式的脉络,不涉及细节问题。

2、核心思想:同一个方法,根据不同的状态,表现出不同的结果。

以上案例,只为讲述State模式的设计思想,明白原理,灵活运用即可。设计模式的最高境界,不知道自己运用了设计模式。

欢迎吐槽指正,让我们一起变得强大!
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值