Définition: Un objet doit garder le moins de compréhension des autres objets.
L'origine du problème: la relation entre les classes se rapproche de plus en plus, et le couplage devient de plus en plus grand. Lorsqu'une classe change, plus l'impact sur une autre classe est grand.
Solution: minimiser le couplage entre les classes autant que possible.
Depuis que nous sommes entrés en contact avec la programmation, nous avons connu les principes généraux de la conception des logiciels, du faible couplage et de la cohésion élevée. Qu'il soit orienté objet ou orienté vers le processus, le degré de couplage doit être aussi faible que possible pour améliorer le taux de réutilisation du code. Mais comment programmer un couplage faible?
Peu importe la complexité de la logique, pour les classes dépendantes, essayez de résumer la logique à l'intérieur de la classe et ne divulguez aucune information à l'extérieur, sauf pour les méthodes publiques fournies. Il existe également une définition plus simple: communiquer uniquement avec des amis directs. Tout d'abord, expliquons ce qu'est un ami direct; Chaque objet sera couplé à d'autres objets. Disons qu'il existe une relation de couplage entre ces deux objets. Disons que ces deux objets ont une relation d'ami. Il existe de nombreuses façons dont le couplage se produit, tels que la dépendance, l'association, la composition, l'agrégation, etc. Parmi eux, nous appelons la classe qui apparaît des variables membre, des paramètres de méthode et des valeurs de retour de méthode appelées amis directs, tandis que la classe qui apparaît dans les variables locales n'est pas des amis directs. C'est-à-dire qu'il est préférable de ne pas apparaître à l'intérieur de la classe en tant que variables locales;
Par exemple, dans une école, il y a plusieurs enseignants, numérotés en séquence. Il y a plusieurs étudiants ci-dessous, numérotés en même temps. Maintenant, demandez à imprimer tous les identifiants des enseignants et des élèves.
Premièrement, violez le principe du faible couplage et de la cohésion élevée
Le code est le suivant.
Package Test1; import java.util.arraylist; import java.util.list; classe enseignant {privatestring id; publicVoidSetId (String id) {this.id = id;} publicString getID () {return id;}} classe étudiant {private String Id; public void setid (String id) {this.id = id;} public String GetId () {Retour ID)} StudentManage {publicList <Student> getAllStudent () {list <Student> list = newArrayList <Student> (); for (int i = 0; i <100; i ++) {Student Student = new Student (); Student.SetId ("Student Number est" + i); List.Add (Student);} Retour List;}} Class TeacherMage {publicList <Enachers> list = newArrayList <Seacher> (); pour (inti = 0; i <100; i ++) {professeur enseignante = new enseignante (); enseignant.setid ("numéro de professeur" + i); list.add (professeur);} return list;} public void printallPerson (studentmanageStudentManAger) {list <list> list1 = studentmanager.getallLesTud (); for (student> list1 = studentmanager.getallLesTend (); for (Student> List1) {System.out.println (s.getId ());} list <eacher> list2 = this.getAllTeacher (); for (Teacher t: list2) {System.out.println (t.getID ());}}} public classClient {publicStaticVoidMain (String [] args) {TeacherManagetm = NewTeacherManage (); tm.printAllPerson (New StudentManage ());}} Le principal problème de cette conception apparaît désormais dans la classe TeacherManage. Selon la faible loi de couplage et de cohésion élevée, il ne communique qu'avec des amis directs. La classe étudiante n'est pas un ami direct dans la classe TeacherManage. Un tel couplage de la relation d'amis non directs doit être évité dans la classe.
Après modification, le code est le suivant:
Package Test2; import java.util.arraylist; import java.util.list; classe enseignant {privateString id; publicVoidSetId (String id) {this.id = id;} publicString getID () {return id;}} classe étudiant {private String id; public void setid (String id) {this.id = id;} public String GetId () {wrand id) {this.id = id;} public String GetId () {Retour ID) {this.id = id;} public String GetId () {Retour ID)}}} Class; StudentManage {publicList <Student> getAllStudent () {list <Student> list = newArrayList <Student> (); for (int i = 0; i <100; i ++) {Student Student = new Student (); Student.setid ("Numéro d'étudiant est" + i); list.add (étudiant);} Retour List;} public vide Printallstudent () {List <Student> list1 = this.getAllStudent (); for (Student s: list1) {System.out.println (s.getId ());}}} class TeachingManage {publicList <Deargeing> getAllTeacher () {list <enseignant> list = newArrayList <Deargers> (); pour (inti = 0; i <100; i ++) {professeur = nouveau) Enseignante (); enseignante.setid ("numéro de professeur" + i); list.add (professeur);} return list;} publicVoidPrintAllTeacher () {list <oacher> list2 = this.getallteacher (); for (enseignant t: list2) {System.out.println (t.getid ();}}} public classice {publicstatinvoxidMain (Strinde); {TeacherManagetm = NewTeacherManage (); tm.printallTeacher (); étudiantManagesM = newStudentManage (); sm.printAllStudent ();}}Après la modification, l'élève a ajouté une nouvelle méthode d'identification de l'élève et l'enseignant peut l'appeler directement. Cela évite le couplage avec les étudiants. L'intention initiale du principe du couplage faible et de la cohésion élevée est de réduire le couplage entre les classes. Étant donné que chaque classe réduit les dépendances inutiles, il est en effet possible de réduire la relation de couplage. Cependant, tout a un diplôme. Bien que la communication avec les classes indirectes puisse être évitée, afin de communiquer, les relations se produiront inévitablement par un "intermédiaire". L'utilisation de cette règle peut atteindre une structure claire, une cohésion élevée et un couplage faible,
Le couplage et la cohésion sont deux normes qualitatives pour l'indépendance des modules. Lorsque vous divisez les systèmes logiciels en modules, essayez d'atteindre la cohésion élevée et le couplage faible autant que possible pour améliorer l'indépendance du module et jetez les bases de la conception de structures de logiciels de haute qualité.
Il existe un exemple facile à comprendre: un programme a 50 fonctions, et ce programme s'exécute très bien; Cependant, une fois que vous avez modifié l'une des fonctions, les 49 autres fonctions doivent être modifiées, ce qui est la conséquence d'un couplage élevé.
Résumer
Ce qui précède est tout le contenu de cet article sur l'analyse du code de l'exemple de code de cohésion élevée et de loi de couplage faible. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!