Heim Java javaLernprogramm So implementieren Sie das Einzelverantwortungsprinzip des Java-Entwurfsmusters

So implementieren Sie das Einzelverantwortungsprinzip des Java-Entwurfsmusters

Apr 18, 2023 pm 03:58 PM
java

Single-Responsibility-Prinzip, kurz SRP genannt.

Definition:

Es sollte nie mehr als einen Grund für eine Klassenänderung geben.

Es sollte nur einen Grund für eine Klassenänderung geben.

Manchmal haben Entwickler Probleme beim Entwerfen von Schnittstellen, z. B. wenn Benutzerattribute und Benutzerverhalten in einer Schnittstelle deklariert werden. Dies führt dazu, dass Geschäftsobjekte und Geschäftslogik zusammengefasst werden, was dazu führt, dass die Schnittstelle zwei Verantwortlichkeiten hat. Gemäß der Definition von SRP verstößt dies gegen das Prinzip der Einzelverantwortung der Schnittstelle.

Das Folgende ist ein Beispiel:

package com.loulijun.chapter1;     public interface Itutu {      //身高      void setShengao(double height);      double getShengao();      //体重      void setTizhong(double weight);      double getTizhong();      //吃饭      boolean chiFan(boolean hungry);      //上网      boolean shangWang(boolean silly);  }
Nach dem Login kopieren

Das obige Beispiel weist dieses Problem auf. Größe und Gewicht sind Geschäftsobjekte, und die entsprechenden Methoden sind hauptsächlich für die Attribute des Benutzers verantwortlich. Essen und Surfen im Internet sind entsprechende Geschäftslogiken, die maßgeblich für das Nutzerverhalten verantwortlich sind. Dies gibt den Leuten jedoch das Gefühl, dass sie nicht wissen, was diese Schnittstelle tut, die Verantwortlichkeiten sind nicht klar und es wird auch bei der späteren Wartung zu verschiedenen Problemen führen.

Lösung: Einzelverantwortungsprinzip, zerlegen Sie diese Schnittstelle einfach in zwei Schnittstellen mit unterschiedlichen Verantwortlichkeiten

ItutuBO.java: Verantwortlich für die Attribute von Tutu (TuTu, wenn es ein persönlicher Name ist)

package com.loulijun.chapter1;     /**   * BO:Bussiness Object,业务对象   * 负责用户的属性   * @author Administrator   *   */ public interface ItutuBO {      //身高      void setShengao(double height);      double getShengao();      //体重      void setTizhong(double weight);      double getTizhong();  }
Nach dem Login kopieren

ItutuBL.java: Verantwortlich für Tutu Das Verhalten von Tu

package com.loulijun.chapter1;  /**   * BL:Business Logic,业务逻辑   * 负责用户的行为   * @author Administrator   *   */ public interface ItutuBL {      //吃饭      boolean chiFan(boolean hungry);      //上网      boolean shangWang(boolean silly);  }
Nach dem Login kopieren

erreicht somit die alleinige Verantwortung der Schnittstelle. Dann müssen Sie bei der Implementierung der Schnittstelle zwei verschiedene Klassen haben: TutuBO.java,

package com.loulijun.chapter1;     public class TutuBO implements ItutuBO {      private double height;      private double weight;      @Override     public double getShengao() {                 return height;      }         @Override     public double getTizhong() {          return weight;      }         @Override     public void setShengao(double height) {          this.height = height;      }         @Override     public void setTizhong(double weight) {          this.weight = weight;      }     }
Nach dem Login kopieren
, TutuBL.java,
package com.loulijun.chapter1;     public class TutuBL implements ItutuBL {         @Override     public boolean chiFan(boolean hungry) {          if(hungry)          {              System.out.println("去吃火锅...");              return true;          }          return false;      }         @Override     public boolean shangWang(boolean silly) {          if(silly)          {              System.out.println("好无聊啊,上会网...");              return true;          }          return false;      }     }
Nach dem Login kopieren
. Wenn Sie Benutzerattribute ändern müssen, müssen Sie nur die ItutuBO-Schnittstelle ändern wirkt sich auf die TutuBO-Klasse aus und hat keinen Einfluss auf andere Klassen.

Welche Bedeutung hat also das Prinzip der Einzelverantwortung?

Reduzieren Sie die Komplexität der Klasse und definieren Sie klar, welche Verantwortlichkeiten implementiert sind.

    Verbessern Sie die Lesbarkeit.
  1. Verbessern Sie die Wartbarkeit Es ist sehr hilfreich für Wartung und Instandhaltung. Allerdings gibt es ein Problem bei der Verwendung des Prinzips der Einzelverantwortung. Es gibt keinen klaren Standard für die Aufteilung der „Verantwortung“. Klassen werden im Gegenteil stark zunehmen, die Komplexität erhöhen und die Wartbarkeit des Codes verringern. Daher müssen bei der Ausübung dieser Verantwortung die spezifischen Umstände analysiert werden. Der Vorschlag besteht darin, dass die Schnittstelle das Prinzip der Einzelverantwortung übernehmen und das Prinzip der Einzelverantwortung so weit wie möglich im Design der Klasse implementieren muss. Der einzige Grund ist, dass sich eine Klasse ändert.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie das Einzelverantwortungsprinzip des Java-Entwurfsmusters. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Quadratwurzel in Java Quadratwurzel in Java Aug 30, 2024 pm 04:26 PM

Quadratwurzel in Java

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Perfekte Zahl in Java

Zufallszahlengenerator in Java Zufallszahlengenerator in Java Aug 30, 2024 pm 04:27 PM

Zufallszahlengenerator in Java

Armstrong-Zahl in Java Armstrong-Zahl in Java Aug 30, 2024 pm 04:26 PM

Armstrong-Zahl in Java

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Weka in Java

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Smith-Nummer in Java

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

Fragen zum Java Spring-Interview

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Brechen oder aus Java 8 Stream foreach zurückkehren?

See all articles