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

第2章 組件設計原則

Java陣營一直倡導開源,開源運動如火如荼展開,催生了無數組件。但是,坦率地講,這些開源的組件中,能夠直接拿過來,不做任何改造,就能用于商業軟件的構建,滿足功能和性能的要求,這樣的優秀組件并不多見。因此,核心軟件開發者時常面對的尷尬局面是:大量的開源資源,都不滿足我的要求。

實際上,組件設計是軟件設計開發最精髓所在,凝聚了面向對象、數據結構、設計模式、線程并發同步、網絡通信、操作系統等諸多領域的最核心技術,一直是設計開發領域彰顯技術水準的最高領地。

一個組件,要想被廣泛重用,滿足不同系統的使用要求,就要求組件有足夠的能力適應不同的應用場合,提供滿足需要的功能,并表現出優秀的性能。因此,組件設計過程中,組件設計者要考慮的問題非常廣泛而復雜,組件設計者需要具備的知識、技能和經驗要求非常高,主要包括如下三個層次的核心能力。

(1)第一層次:編程能力。主要包括:

● 編程語言的熟練使用;

● 數據結構的精準運用;

● 多線程并發、同步的準確理解和實現;

● Socket網絡編程技術的全面掌握和運用;

● 數據庫概念的精準理解和熟練應用。

(2)第二個層次:設計能力。主要包括:

● 面向對象思想的精準理解和正確應用;

● 設計模式的精準理解和正確應用;

● 優秀的框架、中間件、數據庫的深入洞悉和優化能力;

● 數據備份、安全、可維護性等方面的技術知識掌握;

● 設計方案的分析、比較、權衡和抉擇。

(3)第三個層次:需求分析能力。主要包括:

● 對客戶明確的功能需求進行分析的能力;

● 對客戶明確的性能、數據備份、安全、可維護性等方面需求進行分析的能力;

● 推理、提取、歸納客戶隱性需求的能力;

● 對需求方案進行分析、比較、權衡和抉擇的能力。

每個層次的完成標準,是對本層次內的產出物,可以精確地闡述,為什么一定要這樣,而不能采用別的方案或實現的理由。比如,在第二個層次——設計階段,必須要能精確地說出:這樣設計軟件的依據在哪里,而且為什么一定要這樣設計,而不能用其他的方案呢;這種設計方案與別的設計方案相比較時優勢在哪里,不足在哪里;選擇這種設計方案的理由在哪里。在深厚的技術和經驗積累的基礎上,能夠橫向的對各種方案進行深入的優缺點分析、比較、權衡和抉擇,是相應階段修煉完成的重要標志。

對一個本科畢業生來說,走上工作崗位后,在項目實戰中進行學習和積累,到達第一個層次,至少需要2~3年的時間。修煉第二個層次,還需要3~4年的時間。修煉第三個層次,還需要2~3年的時間。

考慮實際工作中,一個軟件開發人員經常在一個項目開發過程中,對以上三個層次的相關活動都會參與,相當于三個層次同時進行修煉,因此通常工作經驗至少在5年以上才有可能涉足組件設計這個領域。另外,逐步地完善和全面提升,日臻精純,需要天賦、勤奮、深入的思考和歲月的積累。這也就是,為什么在軟件領域,組件到處泛濫,但優秀組件卻不多的原因所在。

本章將對組件設計過程中要考慮的核心要素、設計中要遵循的核心原則進行總體闡述,使讀者能從總體上掌握如何發現、評判、設計一個優秀的組件。

本章將對目前業界存在的諸多技術爭論、誤區進行澄清,讓讀者從所謂的“業界潮流”、教條、“黃金定律”中走出來,真正理解組件設計過程的核心原則。這些核心原則如下:

原則一:精準地解決共性問題

原則二:無配置文件

原則三:與使用者概念一致

原則四:業務無關的中立性

原則五:對使用環境無依賴

原則六:單類設計和實現

下面來詳細講解每個核心原則。

主站蜘蛛池模板: 竹溪县| 和田市| 故城县| 湟源县| 新建县| 巧家县| 西城区| 新平| 嫩江县| 织金县| 和平区| 阿拉善盟| 阿拉善盟| 女性| 隆昌县| 来宾市| 富平县| 剑川县| 武胜县| 射阳县| 赤峰市| 家居| 女性| 普宁市| 仙桃市| 奉化市| 黔南| 巴林右旗| 蓝田县| 南召县| 忻州市| 汕尾市| 彰化县| 长垣县| 怀来县| 登封市| 浮山县| 舟山市| 诏安县| 冷水江市| 大宁县|