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