Definition: Ein Objekt sollte das geringste Verständnis anderer Objekte behalten.
Der Ursprung des Problems: Die Beziehung zwischen den Klassen kommt immer näher und die Kopplung wird immer größer. Wenn sich eine Klasse ändert, desto größer ist die Auswirkungen auf eine andere Klasse.
Lösung: Minimieren Sie die Kopplung zwischen Klassen so weit wie möglich.
Seit wir mit der Programmierung in Kontakt gekommen sind, haben wir die allgemeinen Prinzipien des Softwaredesigns, der geringen Kopplung und des hohen Zusammenhalts gekannt. Unabhängig davon, ob es sich um objektorientierte oder prozessorientierte Objekte handelt, sollte der Kopplungsgrad so niedrig wie möglich sein, um die Wiederverwendungsrate von Code zu verbessern. Aber wie programmiere ich eine niedrige Kopplung?
Unabhängig davon, wie komplex die Logik für abhängige Klassen ist, versuchen Sie, die Logik innerhalb der Klasse zu verkörpern, und geben Sie keine Informationen außerhalb der angegebenen öffentlichen Methoden an. Es gibt auch eine einfachere Definition: Kommunizieren Sie nur mit direkten Freunden. Lassen Sie uns zunächst erklären, was ein direkter Freund ist. Jedes Objekt wird mit anderen Objekten verbunden. Nehmen wir an, es gibt eine Kopplungsbeziehung zwischen diesen beiden Objekten. Nehmen wir an, diese beiden Objekte haben eine Freundesbeziehung. Es gibt viele Möglichkeiten, wie eine Kopplung auftritt, z. B. Abhängigkeit, Assoziation, Zusammensetzung, Aggregation usw. Unter ihnen nennen wir die Klasse, die Mitgliedsvariablen, Methodenparameter und Methodenrückgabewerte genannt wird, die als direkte Freunde bezeichnet werden, während die in lokalen Variablen erscheinende Klasse keine direkten Freunde ist. Das heißt, es ist am besten, nicht in der Klasse als lokale Variablen zu erscheinen.
Zum Beispiel gibt es in einer Schule mehrere Lehrer, die nacheinander nummeriert sind. Im Folgenden finden Sie mehrere Schüler, die gleichzeitig nummeriert sind. Fragen Sie nun, alle Lehrer und Schülerausweise auszudrucken.
Erstens verletzen das Prinzip der geringen Kopplung und des hohen Zusammenhalts
Der Code ist wie folgt.
Paket test1; import Java.util.ArrayList; importieren java.util.list; Klasse Lehrer {privateString id; publicVoidSetId (String id) {this.id = id;} publicString -GetId () {return id;}} Klasse Schüler {private String id; public void id; StudentManage{publicList<Student> getAllStudent() {List<Student> list=newArrayList<Student>();for (int i=0;i<100;i++) {Student student=new Student();student.setId("Student student number is"+i);list.add(student);}return list;}}class TeacherManage{publicList<Teacher> getAllTeacher() {List<Teacher> list = newArrayList <Lacher> (); für (inti = 0; i <100; i ++) {Lehrerlehrer = neuer Lehrer (); Lehrer. {System.out.println (S.GetID ());} List <Arter> list2 = this.getAllTeacher (); für (Lehrer t: list2) {System.out.println (t.getId ());}}}}}}}}}}}}}}}}}}} public Classclient {publicStaticVoidMain (String [] args) {lehreManagetm = newTeacherManage (); Das Hauptproblem dieses Designs erscheint jetzt in der Lehrerklasse. Nach dem geringen Kopplung und dem hohen Zusammenhaltsgesetz kommuniziert es nur mit direkten Freunden. Die Schülerklasse ist kein direkter Freund in der Lehrerklasse. Eine solche nicht-direkte Freundesbeziehungskupplung sollte in der Klasse vermieden werden.
Nach der Änderung lautet der Code wie folgt:
Paket test2; import Java.util.ArrayList; importieren java.util.list; Klasse Teacher {privateString id; publicVoidSetId (String id) {this.id = id;} publicString -GetId () {return id;}} Klasse Schüler {private String id; public void id; StudentManage {PublicList <Student> getAllstudent () {list <Student> list = newArrayList <Student> (); für (int i = 0; i <100; i ++) {student student = new student (); student.setId ("Studentnummer ist"+i); list.add (student);} return liste; {List <Sudent> list1 = this.getAllstudent (); für (Schüler s: list1) {system.out.println (s.getId ());}} Klasse Lehrermanage {PublicList <Arturer> getAllTeacher () {List <Artar> List = NewArrayList <Arturer> (); Teacher();teacher.setId("Teacher number"+i);list.add(teacher);}return list;}publicvoidprintAllTeacher() {List<Teacher> list2=this.getAllTeacher();for (Teacher t:list2) {System.out.println(t.getId());}}}public classClient {publicstaticvoidmain(String[] args) {LehreManagetm = newTeachermanage ();Nach der Änderung hat der Schüler eine neue Methode der Schüler -ID hinzugefügt, und der Lehrer kann sie direkt anrufen. Dies vermeidet eine Kopplung mit den Schülern. Die ursprüngliche Absicht des Prinzips der geringen Kopplung und des hohen Zusammenhalt besteht darin, die Kopplung zwischen Klassen zu verringern. Da jede Klasse unnötige Abhängigkeiten reduziert, ist es in der Tat möglich, die Kopplungsbeziehung zu verringern. Alles hat jedoch einen Abschluss. Obwohl die Kommunikation mit indirekten Klassen vermieden werden kann, werden Beziehungen zwangsläufig durch einen "Vermittler" auftreten, um zu kommunizieren. Die Verwendung dieser Regel kann eine klare Struktur, einen hohen Zusammenhalt und eine niedrige Kopplung erreichen,
Kopplung und Zusammenhalt sind zwei qualitative Standards für die Unabhängigkeit des Moduls. Versuchen Sie bei der Aufteilung von Softwaresystemen in Module, um einen hohen Zusammenhalt und eine niedrige Kopplung so weit wie möglich zu erreichen, um die Unabhängigkeit des Moduls zu verbessern und die Grundlage für die Gestaltung hochwertiger Softwarestrukturen zu legen.
Es gibt ein Beispiel, das leicht zu verstehen ist: Ein Programm hat 50 Funktionen, und dieses Programm wird sehr gut ausgeführt. Sobald Sie jedoch eine der Funktionen geändert haben, müssen die anderen 49 Funktionen geändert werden, was die Folge einer hohen Kopplung ist.
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels über die Codeanalyse des Beispielcode für hohen Zusammenhalt und niedriger Kopplungsgesetz. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!