Определение: Один объект должен сохранять наименьшее понимание других объектов.
Происхождение проблемы: взаимосвязь между классами становится все ближе и ближе, а связь становится все больше и больше. Когда один класс меняется, тем больше влияние на другой класс.
Решение: минимизировать связь между классами как можно больше.
Поскольку мы вступили в контакт с программированием, мы знали общие принципы проектирования программного обеспечения, низкой связи и высокой сплоченности. Будь то объектно-ориентированная или ориентированная на процесс, степень связи должна быть максимально низкой, чтобы улучшить скорость повторного использования кода. Но как программировать низкую связь?
Независимо от того, насколько сложна логика, для зависимых классов пытайтесь инкапсулировать логику внутри класса и не раскрывайте никакой информации снаружи, за исключением предоставленных публичных методов. Существует также более простое определение: общаться только с прямыми друзьями. Во -первых, давайте объясним, что такое прямой друг; Каждый объект будет связан с другими объектами. Допустим, между этими двумя объектами существует связь. Допустим, эти два объекта имеют отношения друга. Существует много способов, которыми происходит связь, такие как зависимость, ассоциация, композиция, агрегация и т. Д. Среди них мы называем класс, который появляется переменные члена, параметры метода и возвращаемые значения метода, называемые прямыми друзьями, в то время как класс, который появляется в локальных переменных, не является прямым друзьями. То есть лучше не появляться внутри класса как локальные переменные;
Например, в школе в ней есть несколько учителей, пронумерованных последовательно. Ниже есть несколько студентов, пронумерованных за один раз. Теперь попросите распечатать все учителя и идентификаторы учеников.
Во -первых, нарушить принцип низкой связи и высокой сплоченности
Код выглядит следующим образом.
package test1;import java.util.ArrayList;import java.util.List;class Teacher{privateString id;publicvoidsetId(String id) {this.id=id;}publicString getId() {return id;}}class Student{private String id;public void setId(String id) {this.id=id;}public String getId() {return id;}}class StudentManage {publicList <toold> getAllStudent () {list <toold> list = newarraylist <toodte> (); для (int i = 0; i <100; i ++) {Студент Студент = Новый Студент (); Студент list = newarraylist <semine> (); для (inti = 0; i <100; i ++) {учитель учителя = новый учитель (); учитель.setid ("номер учителя"+i); list.add (учитель);} return List;} public void printallperson (студент managestudentmanager) {list <student> spectmanger. {System.out.println (s.getid ());} list <bervice> list2 = this.getallteacher (); для (учитель T: list2) {System.out.println (t.getId ());}}} public classclient {publicstaticvoidmain (string [] args) {wearnermanagetm = newteachermanage (); tm.printallperson (new studentmanage ());}} Основная проблема этого дизайна теперь появляется в классе преподавателей. Согласно закону о низкой связи и высокой сплоченности, он общается только с прямыми друзьями. Класс учеников не является прямым другом в классе преподавателей. Такой не направленной связи с другом следует избегать в классе.
После изменения код следующим образом:
package test2;import java.util.ArrayList;import java.util.List;class Teacher{privateString id;publicvoidsetId(String id) {this.id=id;}publicString getId() {return id;}}class Student{private String id;public void setId(String id) {this.id=id;}public String getId() {return id;}}class StudentManage {publicList <Tood> getAllStudent () {list <toold> list = newarraylist <toodtce> (); для (int i = 0; i <100; i ++) {Студент Студент = Новый Студент (); Студент {List <toold> list1 = this.getallStudent (); for (студент S: list1) {System.out.println (s.getid ());}}} класс Учитель Manage {publicList <учитель> getAllteacher () {list <учитель> list = newarraylist <учитель> (); для (inti = 0; i <100; Учитель (); учитель.setid ("номер учителя"+i); list.add (учитель);} return List;} publicvoidPrintAllateCher () {list <учитель> list2 = this.getallteacher (); для (учитель t: list2) {system.out.println (t.getid ();)}} publicplient {publicSt. {Wearmangemanagetm = newceermanage (); tm.printallteacher (); Student Managesm = newStudentManage (); Sm.printallStudent ();}}После модификации ученик добавил новый метод идентификатора учащегося, и учитель может позвонить ему напрямую. Это избегает связи со студентами. Первоначальное намерение принципа низкой связи и высокой сплоченности заключается в уменьшении связи между классами. Поскольку каждый класс снижает ненужные зависимости, действительно возможно уменьшить взаимосвязь связи. Тем не менее, все имеет степень. Хотя общения с косвенными классами можно избежать, чтобы общаться, отношения неизбежно будут происходить через «посредник». Использование этого правила может достичь четкой структуры, высокой сплоченности и низкой связи,
Связь и сплоченность являются двумя качественными стандартами независимости модуля. При разделении программных систем на модули старайтесь как можно больше достичь высокой сплоченности и низкой связи, чтобы улучшить независимость модуля и заложить основу для проектирования высококачественных программных структур.
Существует пример, который легко понять: программа имеет 50 функций, и эта программа выполняется очень хорошо; Однако, как только вы измените одну из функций, необходимо изменить другие 49 функций, что является следствием высокой связи.
Суммировать
Выше приведено все содержание этой статьи об анализе кодекса примера Кодекса высокой сплоченности и закона о низкой связи. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!