官术网_书友最值得收藏!

  • Java核心編程
  • 柳偉衛(wèi)
  • 572字
  • 2020-11-23 15:08:33

3.5 對象提供服務(wù)

當(dāng)設(shè)計(jì)一個程序時,需要將對象想象成一個服務(wù)的供應(yīng)商。對象提供服務(wù)給用戶,解決不同的問題。比如,在設(shè)計(jì)一個圖書管理軟件時,你可能設(shè)想一些對象包含了哪些預(yù)定義輸入,其他對象可能用于圖書的統(tǒng)計(jì),一個對象用于打印的校驗(yàn)等。這都需要將一個問題分解成一組對象。

將對象的思考作為服務(wù)供應(yīng)商有一個額外的好處:有助于改善對象的凝聚力。高內(nèi)聚(High cohesion)是軟件設(shè)計(jì)的基本質(zhì)量:這意味著,一個軟件組件的各方面(如對象,盡管這也可以適用于一個方法或一個對象的庫)“結(jié)合在一起”。在設(shè)計(jì)對象時經(jīng)常出現(xiàn)的問題是將太多的功能合并到一個對象里面。例如,在支票打印模塊,你可以決定你需要知道的所有有關(guān)格式和打印的對象。你可能會發(fā)現(xiàn),這對于一個對象來說有太多的內(nèi)容,你需要3個或3個以上的對象:一個對象用于查詢有關(guān)如何打印一張支票的信息目錄;一個對象(或一組對象)可以是知道所有不同類型的打印機(jī)的通用打印接口;第三個對象可以使用其他兩個對象的服務(wù)來完成任務(wù)。因此,每個對象都有一套它提供的有凝聚力的服務(wù)。在良好的面向?qū)ο笤O(shè)計(jì)中,每個對象都會做好一件事,但不會嘗試做太多。

將對象作為服務(wù)供應(yīng)商是一個偉大的簡化工具。這不僅在設(shè)計(jì)過程中是非常有用的,在別人試圖理解你的代碼或重用的對象時也很有用。如果能得知根據(jù)它提供什么樣的服務(wù)獲得對象的值,那么就可以更容易地在設(shè)計(jì)中使用它。

主站蜘蛛池模板: 孝感市| 蚌埠市| 滨海县| 曲周县| 远安县| 吴堡县| 苍南县| 阿尔山市| 堆龙德庆县| 洛川县| 阳曲县| 乐至县| 南丹县| 赫章县| 五家渠市| 通辽市| 汤阴县| 高要市| 武汉市| 定日县| 五大连池市| 确山县| 石狮市| 常州市| 定陶县| 乌兰浩特市| 山丹县| 卓资县| 兴文县| 枣阳市| 中超| 建水县| 巨野县| 会同县| 吐鲁番市| 淅川县| 民丰县| 秭归县| 嘉义市| 施秉县| 牙克石市|