Modèles de conception Java 23-17. Mode d'état du mode comportemental

En plus des principes de conception en Java, il existe également 23 modèles de conception.

Ces modèles ont été progressivement accumulés par les prédécesseurs, se sont améliorés et ont été optimisés, et ces modèles de conception peuvent résoudre certains problèmes spécifiques.

Et dans ces modes, on peut dire que l'utilisation de la langue est pleinement reflétée.

Ensuite, nous allons apprendre   le mode état dans le   mode comportemental aujourd'hui     !

Mode état

Voyons d'abord ce que l'on appelle un mode d'état

Nous pouvons apprendre de l'encyclopédie que le mode d'état peut changer l'état interne d'un objet puis changer son comportement, de sorte que l'objet semble modifier sa classe, qui peut être plus abstraite.

En ce qui concerne la météo, le temps peut être ensoleillé, pluvieux, venteux, etc. Des conditions météorologiques différentes auront des comportements différents. Par exemple, il fait beau, il est impossible d'avoir des averses de grains, mais il doit être sans nuages. Le soleil brille

Définition et caractéristiques du mode d'état

La définition du mode d'état: pour les objets avec état, une «logique de jugement» complexe est extraite dans différents objets d'état, permettant aux objets d'état de changer de comportement lorsque leur état interne change.

Le mode état est un mode comportemental d'objet, et ses principaux avantages sont les suivants.

1. Le mode état localise les comportements liés à un état spécifique dans un état, et sépare les comportements des différents états pour répondre au «principe de responsabilité unique».

2. Réduisez l'interdépendance entre les objets. L'introduction de différents états dans des objets indépendants rendra les transitions d'état plus explicites et réduira l'interdépendance entre les objets.

3. Propice à l'expansion du programme. Il est facile d'ajouter de nouveaux états et transitions en définissant de nouvelles sous-classes.


Les principaux inconvénients du mode d'état sont les suivants.

1. L'utilisation du mode d'état augmentera inévitablement le nombre de classes et d'objets dans le système.

2. La structure et la mise en œuvre du mode d'état sont relativement compliquées, et si elles sont utilisées de manière incorrecte, elles entraîneront une confusion dans la structure et le code du programme.

La structure et la réalisation du modèle d'état

Le modèle d'état emballe le comportement des objets qui sont modifiés par l'environnement dans différents objets d'état, et son intention est de faire en sorte qu'un objet modifie son comportement lorsque son état interne change.

Le modèle d'état comprend les rôles principaux suivants:

1. Rôle d'environnement: également appelé contexte, il définit l'interface qui intéresse les clients, maintient un état actuel et délègue les opérations liées à l'état à l'objet d'état actuel pour traitement.

2. Rôle d'état abstrait: définissez une interface pour encapsuler le comportement correspondant à un état spécifique dans l'objet d'environnement.

3. Rôle d'état spécifique: réaliser le comportement correspondant à l'état abstrait.

 

Après avoir su cela, implémentons l'exemple ci-dessus

premier pas:

Définissons d'abord la classe d'état abstraite, cette classe est la météo

Après l'avoir défini, nous ajouterons une méthode pour cette météo

La deuxième étape:

Définissons ensuite notre classe d'état abstraite de réalisation concrète

troisième étape:

Ensuite, nous avons besoin d'un rôle environnemental, nous pouvons vérifier la météo actuelle en changeant l'état

package com.java.state;

public class Context {

	private Weather weather;
	private Integer status;
	
	public Context(Integer status) {
		this.status = status;
		if(this.status == 1) {
			this.weather = new SunnyDay();
		}
		if(this.status == 2) {
			this.weather = new WindDay();
		}
		if(this.status == 3) {
			this.weather = new SnowDay();
		}
	}

	public Weather getWeather() {
		return weather;
	}

	public void setWeather(Weather weather) {
		this.weather = weather;
	}
	
	public Integer getStatus() {
		return status;
	}

	public void setStatus(Integer status) {
		this.status = status;
		if(this.status == 1) {
			this.weather = new SunnyDay();
		}
		if(this.status == 2) {
			this.weather = new WindDay();
		}
		if(this.status == 3) {
			this.weather = new SnowDay();
		}
	}

	public void weather() {
		this.weather.weather();
	}
}

Lorsque nous instancions l'environnement, nous pouvons passer une variable de type Integer, et laisser cette variable lier l'état dans cette classe, de sorte qu'en modifiant l'état, créez le type correspondant en fonction de la variable, et appelez l'implémentation spécifique

test:

Faisons tester une classe Test

Nous allons jeter un coup d'oeil

Ensuite, nous modifions le statut

N'est-ce pas OK, tout le monde le sent

 

OK, ça y est, tout le monde regarde bien. Pratique beaucoup. Si vous avez des questions, veuillez me contacter QQ: 2100363119

Bienvenue à tous pour visiter mon site Web personnel: lemon1234.com Merci d'avoir laissé un message

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45908370/article/details/109492527
conseillé
Classement