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

So implementieren Sie das Einzelverantwortungsprinzip des Java-Entwurfsmusters

WBOY
Freigeben: 2023-04-18 15:58:03
nach vorne
1459 Leute haben es durchsucht

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!

Verwandte Etiketten:
Quelle:yisu.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage