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); }
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(); }
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); }
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; } }
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; } }
Welche Bedeutung hat also das Prinzip der Einzelverantwortung?
Reduzieren Sie die Komplexität der Klasse und definieren Sie klar, welche Verantwortlichkeiten implementiert sind.
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!