状态模式 设计模式_设计模式:状态

状态模式 设计模式

本文将介绍状态设计模式 。 它是行为设计模式之一 。 您无需了解许多理论即可了解模式的主要概念。 该文章将分为几个部分,在其中我将提供有关需要应用该模式的情况,它所具有的利弊以及用法示例的信息。 java-design-patterns

有时,当对象的内部状态更改时,您需要更改其行为。 State设计模式允许执行此操作。 您可以通过创建代表不同状态和功能的单独类来获得此功能。 当然,这些类必须从一个抽象类继承或实现一个接口。

当需要在运行时通过输入某些State基类的不同子类来更改对象的状态时,可以使用State设计模式。 这种情况同时是有利和不利的,因为我们有明确的,独立的州类别,并带有某种逻辑,而另一方面,类别的数量却在增加。

让我们考虑这个例子。 每年有四个季节:冬天,春天,夏天和秋天。每个季节都有其自己的顺序,例如春天在冬天之后,夏天在春天之后等等。

季节的基本状态界面:
public interface Season {
	public void theSeason(SeasonContext context);
}

策略设计模式

实现Season接口的状态类:
public class Winter implements Season {

	@Override
	public void theSeason(SeasonContext context) {
		System.out.println("Winter is now.");
		context.setSeason(new Spring());
	}

}
Spring班:
public class Spring implements Season {

	@Override
	public void theSeason(SeasonContext context) {
		System.out.println("Spring is now");
		context.setSeason(new Summer());
	}

}

我将省略夏季和秋季的课程,因为它们与以前的课程相同。

SeasonContext类:
public class SeasonContext {
	private Season season;

	public SeasonContext() {
		this.season = new Winter();
	}

	public void setSeason(Season season) {
		this.season = season;
	}

	public void whatTheSaeson() {
		season.theSeason(this);
	}
}

所有这些东西都显示了State模式的体系结构:基本状态接口,实现状态接口和状态上下文的类。 现在让我们看看它是如何工作的:

...
	public static void main(String[] args) {
		SeasonContext sc = new SeasonContext();
		sc.whatTheSaeson();
		sc.whatTheSaeson();
		sc.whatTheSaeson();
		sc.whatTheSaeson();
	}
...

结果将是:

Winter is now.
Spting is now
Summer is now.
Autumn is now.

参考: 设计模式:Fruzenshtein的注释博客中,来自我们JCG合作伙伴 Alexey Zvolinskiy的陈述

翻译自: https://www.javacodegeeks.com/2013/07/design-patterns-state.html

状态模式 设计模式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值