激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - JAVA教程 - 高內聚低耦合法則實例解析

高內聚低耦合法則實例解析

2021-03-11 13:54佳.Zip JAVA教程

這篇文章主要介紹了高內聚低耦合法則實例代碼解析,具有一定借鑒價值,需要的朋友可以參考下。

定義:一個對象應該對其他對象保持最少的了解。

問題由來:類與類之間的關系越來越密切,耦合度越來越大,當一個類發生改變時,對另外一個類的影響也越大.

解決方案:盡量降低類與類之間的耦合.

自從我們接觸到編程開始,就知道了軟件設計的總的原則,低耦合,高內聚,無論是面向對象或者面向過程,耦合度盡量低,才能提高代碼的復用率。但是編程怎么編程低耦合呢?

無論邏輯怎么復雜,對于依賴的類來說,都盡量將邏輯封裝在類的內部,對外除了提供的public方法,不對外泄露任何信息。還有一個更加簡單的定義:只與直接的朋友通信。首先解釋一下什么是直接的朋友;每個對象都會與其他對象發生耦合關系,我們就說這兩個對象之間有耦合關系,我們就說這兩個對象有朋友關系,耦合發生的方式有很多,依賴,關聯,組合,聚合等等。其中,我們稱出現成員變量,方法參數,方法返回值的類稱為直接的朋友,而出現在局部變量中的類為不是直接的朋友,也就是說,陌生的類最好不要作為局部變量的形式出現在類的內部;

舉一個例子,在一所學校,里面有老師若干名,依次編號。下面有學生若干名,一次編號。現在要求打印出所有的老師和學生的ID.

先來違反低耦合高內聚原則

代碼如下。

java" id="highlighter_609286">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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<Student> getAllStudent()
     {
        List<Student> list=newArrayList<Student>();
        for (int i=0;i<100;i++)
          {
            Student student=new Student();
            student.setId("學生學號是"+i);
            list.add(student);
        }
        return list;
    }
}
class TeacherManage
{
    publicList<Teacher> getAllTeacher()
     {
        List<Teacher> list=newArrayList<Teacher>();
        for (inti=0;i<100;i++)
         {
            Teacher teacher =new Teacher();
            teacher.setId("老師編號"+i);
            list.add(teacher);
        }
        return list;
    }
    public void printAllPerson(StudentManagestudentmanager)
     {
        List<Student>list1=studentmanager.getAllStudent();
        for (Student s:list1)
          {
            System.out.println(s.getId());
        }
        List<Teacher>list2=this.getAllTeacher();
        for (Teacher t:list2)
          {
            System.out.println(t.getId());
        }
    }
}
?
1
2
3
4
5
6
public classClient {
    publicstaticvoidmain(String[] args) {
        TeacherManagetm=newTeacherManage();
        tm.printAllPerson(new StudentManage());
    }
}

現在這個設計的主要問題出現在TeacherManage類中,根據低耦合高內聚法則,只與直接的朋友進行通信,而Student類并不是TeacherManage類中的直接朋友,應避免類中出現這樣非直接朋友關系的耦合。

修改之后代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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<Student> getAllStudent()
     {
        List<Student> list=newArrayList<Student>();
        for (int i=0;i<100;i++)
          {
            Student student=new Student();
            student.setId("學生學號是"+i);
            list.add(student);
        }
        return list;
    }
    public void printAllStudent()
     {
        List<Student>list1=this.getAllStudent();
        for (Student s:list1)
          {
            System.out.println(s.getId());
        }
    }
}
class TeacherManage
{
    publicList<Teacher> getAllTeacher()
     {
        List<Teacher> list=newArrayList<Teacher>();
        for (inti=0;i<100;i++)
         {
            Teacher teacher =new Teacher();
            teacher.setId("老師編號"+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) {
        TeacherManagetm=newTeacherManage();
        tm.printAllTeacher();
        StudentManagesm=newStudentManage();
        sm.printAllStudent();
    }
}

修改后,學生新增加了學生ID的方法,老師直接來調用即可。從而避免了與學生發生耦合。低耦合高內聚原則的初衷是降低了類之間的耦合,由于每個類減少了不必要的依賴,因此的確可以降低耦合關系,但是凡事有個度,雖然可以避免與非直接的類通信,但是要通信,必然會通過一個“中介”來發生關系。采用此法則可以做到結構清晰,高內聚低耦合、

耦合性與內聚性是模塊獨立性的兩個定性標準,將軟件系統劃分模塊時,盡量做到高內聚低耦合,提高模塊的獨立性,為設計高質量的軟件結構奠定基礎。

有個例子很容易明白:一個程序有50個函數,這個程序執行得非常好;然而一旦你修改其中一個函數,其他49個函數都需要做修改,這就是高耦合的后果。

總結

以上就是本文關于高內聚低耦合法則實例代碼解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/lijia503102319/article/details/50259835

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品久久久久久久久久久久午夜 | 在线天堂中文在线资源网 | 日本在线一区二区 | 一本色道久久综合亚洲精品小说 | 午夜视| 成人在线观看一区二区三区 | 久草网在线| 国产乱弄 | 最新精品在线 | 精品中文字幕在线播放 | 国产一级性生活视频 | 法国性xxx精品hd专区 | 免费a观看 | 成人三级电影网 | 日韩在线播放一区二区 | 亚洲91精品| 黄色网址进入 | 日本最新免费二区三区 | 深夜小视频在线观看 | 欧美日韩国产中文字幕 | 日本黄色一级视频 | 日韩区在线 | 中国漂亮护士一级a毛片 | 亚州综合 | 极色品影院 | 黄色大片免费看 | 日韩app| 午夜视频你懂的 | 国产免费一区二区三区最新不卡 | 成年人性视频 | 国产精品自在线拍 | 国产影院一区 | 亚洲乱操 | 亚洲四播房 | 国产一区二区三区欧美 | 久久精品a一级国产免视看成人 | 91成人免费看片 | 国产精品视频一区二区三区四区五区 | 极品五月天 | 爱操成人网 | 男女生羞羞视频网站在线观看 |