最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java面向?qū)ο缶幊填惖膬?nèi)聚性分析

 更新時間:2021年10月14日 08:53:04   作者:guoyp2126  
高內(nèi)聚、低耦合是軟件設(shè)計中非常關(guān)鍵的概念。在面向?qū)ο蟪绦蛟O(shè)計中類的劃分時,類的內(nèi)聚性越高,其封裝性越好,越容易復(fù)用

類劃分時關(guān)于內(nèi)聚性的問題

靜態(tài)類的設(shè)計

在軟件設(shè)計中,我們經(jīng)常會將一些通用的方法封裝到一個類中,這種類只包含方法,沒有屬性,類中的方法之間沒有關(guān)聯(lián),內(nèi)聚性最低,屬于偶然內(nèi)聚或巧合內(nèi)聚。這種設(shè)計常用于工具類,一般設(shè)計為靜態(tài)類,這些方法的使用時類似函數(shù)調(diào)用。設(shè)計需注意,將功能基本接近的方法封裝到一個類中,切忌不能將所有的公用方法封裝到一個大類中,如:日期格式轉(zhuǎn)換,數(shù)字轉(zhuǎn)換字符串等。

高內(nèi)聚類的設(shè)計

高內(nèi)聚類的設(shè)計時,按照操作功能進行封裝,需遵循單一職責(zé)原則,即每一個類完成規(guī)定的某一項任務(wù)。如:dao層的類用作數(shù)據(jù)的增刪改查(CRUD),數(shù)據(jù)實體僅為數(shù)據(jù)載體,用作傳遞數(shù)據(jù)任務(wù)。即每個封裝的類僅完成一項任務(wù)。
又如迭代器模式中迭代器僅為某一個集合進行服務(wù),但是還要獨立出來一個內(nèi)部類,就是把集合數(shù)據(jù)的表示和對集合的遍歷操作兩項任務(wù)分開。
低耦合代表高內(nèi)聚,在進行類的設(shè)計時,如類A的方法中調(diào)用了B類的方法,在A類定義屬性變量或局部對象變量時,使用B類接口定義,通過注入或方法參數(shù)傳入B的對象,使得二者之間形成一種松耦合的關(guān)系。如果一個類對外暴露的接口簡單,接口的參數(shù)為簡單數(shù)據(jù)類型,所有的復(fù)雜操作封裝在類的內(nèi)部,這種類內(nèi)聚性最高,獨立性強。如:通過短信貓發(fā)送短信,對外接口僅為sendMsg(String msg),如何創(chuàng)建連接、格式轉(zhuǎn)換、信息發(fā)送全部封裝類的內(nèi)部。

附:面向過程編程中模塊的內(nèi)聚性

以下是面向過程中內(nèi)聚性由高到低做一說明,對類劃分時有一定的參考意義。

偶然內(nèi)聚或巧合內(nèi)聚(Coincidental)

內(nèi)內(nèi)的各成分之間沒有關(guān)聯(lián),只是把分散的功能合并在一起;類A內(nèi)有BCDE四個方法,這四個方法均為public方法,功能含義上各自獨立。前端開發(fā)api,將不同模塊的api放在一起,就是偶然耦合。

var api = {
   //登錄
   getCaptcha: (param) => get(apiBase+"/captcha.jpg", param), 
   adminLogin: (param) => post(apiBase+"/sys/login", param),

   //部門管理
   departmentList:(param) => get(apiBase+"/tywdepart/list", param),
   departmentAdd:(param) =>post(apiBase+"/tywdepart/save", param),
   departmentUpdate:(param) =>post(apiBase+"/tywdepart/update", param),
   departmentDelete:(param) =>post(apiBase+"/tywdepart/delete", param),
   }

增強耦合度辦法:拆分;將登錄api要使用的api和部門管理api設(shè)計為兩個獨立的api。

邏輯內(nèi)聚(Logical):

若干個邏輯相似的功能通過參數(shù)確定該模塊對應(yīng)哪一個功能。如:類A內(nèi)有BCDE四個方法,這四個方法均為public方法,功能上類似,把它們封裝在一起,如字符串轉(zhuǎn)換函數(shù)工具類,包括int轉(zhuǎn)字符串、double轉(zhuǎn)字符串等。

時間內(nèi)聚(Temporal ):

因為功能必須在同一時間內(nèi)執(zhí)行才寫到一個模塊,即這些功能只是因為時間因素才有關(guān)聯(lián)。 例:程序初始化時,程序員把對所有全局變量的初始化操作放在模塊A中,模塊A中就是時間內(nèi)聚。

過程內(nèi)聚:

模塊內(nèi)部的處理成分是相關(guān)的,而且這些處理必須以特定的次序進行執(zhí)行。一個模塊,為某員工計算工齡工資:打開員工信息文件取出員工記錄;按一定的算法計算工 齡;按一定的算法計算工齡工資。 該模塊中的三個相對獨立的子功能必須以特定次序執(zhí)行,整個模塊具有過程內(nèi)聚

通信內(nèi)聚(Communicational):

所有處理元素集中在一個數(shù)據(jù)結(jié)構(gòu)的區(qū)域上。一個模塊,接收一個遠程傳來的信息文件,保存,同時馬上打印該文件。 該模塊針對同一個文件操作,打印和存盤操作沒有前后順序關(guān)系,整個模塊具有通信內(nèi)聚。

順序內(nèi)聚(Sequential):

模塊內(nèi)的各個處理元素關(guān)注同一功能,順序執(zhí)行,前一元素的輸出結(jié)果作為下一元素的輸入。

功能內(nèi)聚(Functional):

類內(nèi)所有的功能成分均為了完成一項功能服務(wù)的,如:userDao都是為了完成用戶數(shù)據(jù)庫的增刪改查(CRUD)服務(wù)的。

面向過程編程中模塊的內(nèi)聚性參考:
http://www.fzitv.net/article/120602.htm

以上就是java面向?qū)ο缶幊填惖膬?nèi)聚性分析的詳細內(nèi)容,更多關(guān)于java面向?qū)ο缶幊填惖膬?nèi)聚性的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java線程的基礎(chǔ)實例解析

    java線程的基礎(chǔ)實例解析

    這篇文章主要介紹了java線程的基礎(chǔ)實例解析,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12
  • 新手了解java 集合基礎(chǔ)知識

    新手了解java 集合基礎(chǔ)知識

    今天小編就為大家分享一篇關(guān)于Java集合總結(jié),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧,希望對你有所幫助
    2021-07-07
  • Java經(jīng)典快排思想以及快排的改進講解

    Java經(jīng)典快排思想以及快排的改進講解

    今天小編就為大家分享一篇關(guān)于Java經(jīng)典快排思想以及快排的改進講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • spring+maven實現(xiàn)發(fā)送郵件功能

    spring+maven實現(xiàn)發(fā)送郵件功能

    這篇文章主要為大家詳細介紹了spring+maven實現(xiàn)發(fā)送郵件功能,利用spring提供的郵件工具來發(fā)送郵件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • java中多個@Scheduled定時器不執(zhí)行的解決方法

    java中多個@Scheduled定時器不執(zhí)行的解決方法

    在應(yīng)用開發(fā)中經(jīng)常需要一些周期性的操作,比如每5分鐘執(zhí)行某一操作等,這篇文章主要給大家介紹了關(guān)于java中多個@Scheduled定時器不執(zhí)行的解決方法,需要的朋友可以參考下
    2023-04-04
  • 關(guān)于java開發(fā)的性能問題總結(jié)(必看)

    關(guān)于java開發(fā)的性能問題總結(jié)(必看)

    下面小編就為大家?guī)硪黄P(guān)于java開發(fā)的性能問題總結(jié)(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • java如何刪除以逗號隔開的字符串中某一個值

    java如何刪除以逗號隔開的字符串中某一個值

    這篇文章主要介紹了java如何刪除以逗號隔開的字符串中某一個值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java實現(xiàn)Excel表單控件的添加與刪除

    Java實現(xiàn)Excel表單控件的添加與刪除

    本文通過Java代碼示例介紹如何在Excel表格中添加表單控件,包括文本框、單選按鈕、復(fù)選框、組合框、微調(diào)按鈕等,以及如何刪除Excel中的指定表單控件,需要的可以參考一下
    2022-05-05
  • RabbitMQ在Spring Boot中的使用步驟

    RabbitMQ在Spring Boot中的使用步驟

    在Spring Boot中使用RabbitMQ涉及多個步驟,包括配置、創(chuàng)建監(jiān)聽器和發(fā)送消息,下面給大家分享RabbitMQ在Spring Boot中的使用步驟,感興趣的朋友一起看看吧
    2024-07-07
  • 詳解Mybatis中常用的約束文件

    詳解Mybatis中常用的約束文件

    這篇文章主要介紹了詳解Mybatis中常用的約束文件,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09

最新評論

上栗县| 浏阳市| 北海市| 韶关市| 攀枝花市| 葵青区| 沭阳县| 惠来县| 新宁县| 宁强县| 宁强县| 潜山县| 台南县| 桐柏县| 永宁县| 平武县| 砀山县| 嵩明县| 建平县| 榆中县| 龙里县| 普洱| 九江市| 江津市| 尉氏县| 东源县| 克东县| 五台县| 交口县| 五常市| 大悟县| 遂宁市| 三门峡市| 舞阳县| 涡阳县| 巨野县| 瑞安市| 丰城市| 靖江市| 科技| 罗定市|