色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

對(duì)象的自治和行為的擴(kuò)展與適配

  在壞的設(shè)計(jì)中,數(shù)據(jù)往往是分散的,甚至是雜亂的,這就好像一群失去意識(shí)的猛獸,我們無(wú)法控制、協(xié)調(diào)以及管理它們。這種漫無(wú)頭緒的散亂數(shù)據(jù),猶如猛獸的肆意妄為,會(huì)給系統(tǒng)帶來(lái)無(wú)盡的災(zāi)難。隨著系統(tǒng)的演化,這種災(zāi)難會(huì)逐漸蔓延至系統(tǒng)的各個(gè)角落。因此,在面向?qū)ο笤O(shè)計(jì)過(guò)程中,對(duì)數(shù)據(jù)分類(lèi)是識(shí)別對(duì)象的一個(gè)前提。但是,僅僅封裝了數(shù)據(jù)的對(duì)象,如果沒(méi)有操作數(shù)據(jù)的行為,仍舊是沒(méi)有意識(shí)的死亡對(duì)象。

  我始終認(rèn)為,對(duì)象在擁有自己數(shù)據(jù)的情況下,應(yīng)該是自治的。這種“自治”類(lèi)似于SOA中服務(wù)自治的概念,但由于對(duì)象應(yīng)該保持足夠合理的細(xì)粒度,因此這種自治是有限度的自治;或者說(shuō)它體現(xiàn)的是專(zhuān)家的自治。如果對(duì)象擁有足夠的數(shù)據(jù)信息,就必須樹(shù)立這些信息的權(quán)威,這些信息的處理就應(yīng)該由對(duì)象自己來(lái)完成。如果它擁有的信息量不夠,或者根本不具備,則可以委派給其他對(duì)象。此時(shí),行為即對(duì)象的意識(shí),是對(duì)象能夠自治的前提。

  對(duì)象自治依賴(lài)于面向?qū)ο笤O(shè)計(jì)的一個(gè)重要原則,即對(duì)象的數(shù)據(jù)與行為應(yīng)該封裝在一起。Craig Larman提出的“信息專(zhuān)家模式”正是說(shuō)明了這一點(diǎn),該模式認(rèn)為擁有信息的對(duì)象才是處理這些信息的專(zhuān)家。

  對(duì)象自治是一個(gè)很有趣的概念,我們把對(duì)象擬人化,使得對(duì)象成為組成社區(qū)的基本元素。在這個(gè)社區(qū)里,每個(gè)對(duì)象的行動(dòng)都應(yīng)該由自己來(lái)控制。無(wú)論是完成某個(gè)操作,還是發(fā)出請(qǐng)求,或者響應(yīng)事件,對(duì)象都應(yīng)該有自己的判斷。判斷的合理性來(lái)自于它掌握的信息量,以及我們賦予它的意識(shí)的靈性。在構(gòu)建軟件系統(tǒng)時(shí),我們的目標(biāo)就是要搭建這樣一個(gè)由自治對(duì)象組成的社區(qū),而不是無(wú)序的混沌世界。每當(dāng)我們?cè)诓僮鲾?shù)據(jù)時(shí),發(fā)現(xiàn)數(shù)據(jù)開(kāi)始具有發(fā)散、混亂、模糊、蔓延等特征時(shí),就是封裝數(shù)據(jù)的信號(hào)。不管這些數(shù)據(jù)的數(shù)量,還是大小,它都應(yīng)該作為對(duì)象存在于系統(tǒng),同時(shí)該對(duì)象應(yīng)具備操作該數(shù)據(jù)的能力。

  例如在報(bào)表系統(tǒng)中,我們?cè)噲D將構(gòu)建好的報(bào)表整體導(dǎo)出為Excel文件。我們?yōu)閷?dǎo)出功能定義了專(zhuān)門(mén)的接口ExcelTableExporter,它接收一個(gè)報(bào)表對(duì)象和工作薄對(duì)象,導(dǎo)出報(bào)表到Excel文件中:

public interface ExcelTableExporter {
public void export(ReportTable table, WritableWorkbook workbook);
}

it知識(shí)庫(kù)對(duì)象的自治和行為的擴(kuò)展與適配,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 托克托县| 大英县| 普兰县| 聂拉木县| 枣阳市| 肇庆市| 自治县| 竹北市| 马关县| 陈巴尔虎旗| 北京市| 肥城市| 东方市| 岱山县| 固安县| 含山县| 张家川| 康保县| 金乡县| 黔西县| 旬邑县| 绿春县| 普安县| 孟村| 石泉县| 荥经县| 江都市| 台山市| 横峰县| 永寿县| 拜泉县| 三亚市| 青田县| 隆安县| 石家庄市| 卢氏县| 凤山市| 阜新市| 达拉特旗| 遂溪县| 萝北县|