- Live軟件開發(fā)面面談
- 潘俊編著
- 538字
- 2019-07-30 17:54:59
1.1 使用接口編程
先來看看在用Java、C#這樣的面向?qū)ο笳Z言編程時,經(jīng)常被提倡的盡量使用接口的理念。在用繼承基類和實現(xiàn)接口構(gòu)建的類型層次體系中,越往上的類型越一般和抽象,越往下的類型越具體和多功能。在定義變量時,無論是類字段、方法變量,還是方法的參數(shù)和返回值,都盡可能使用抽象的類型。例如Java語言只支持單個基類,類型的大量抽象繼承均以接口的方式體現(xiàn),導(dǎo)致在一個類的層次體系的高層,接口往往比類多,所以盡可能使用的抽象類型就以接口居多,這也就是所謂的使用接口編程。例如下面的C#代碼。

在以ConcreteClass結(jié)尾的兩個方法中,使用的是具體的類型Hashtable;而在以Interface結(jié)尾的兩個方法中,使用的是抽象的接口IDictionary。使用接口的好處是,對于DeclareAndReturnInterface方法,將來如果基于業(yè)務(wù)邏輯或性能的考慮,覺得應(yīng)該采用另一個更合適的實現(xiàn)IDictionary的類,如SortedList,只需要把dict變量初始化成一個SortedList,后面的代碼和返回的類型絲毫不受影響,因而對調(diào)用方是透明的;對于PassInterface方法,能夠接受任何實現(xiàn)了IDictionary接口的參數(shù),調(diào)用方傳入的具體類型發(fā)生變動不會影響該方法的運(yùn)作。簡言之,就是使用的類型越一般,代碼的應(yīng)用范圍越廣,適應(yīng)性越好。當(dāng)然,應(yīng)該是盡可能一般,而不是無條件的最一般。所謂可能,就是指該類型的接口能夠滿足使用者的需求。例如,在上面的例子中不能使用比IDictionary更一般的接口ICollection,因為它沒有Add方法。
- TD-SCDMA移動通信技術(shù)
- 面向5G的蜂窩物聯(lián)網(wǎng)(CIoT)規(guī)劃設(shè)計及應(yīng)用
- LED顯示屏組裝與調(diào)試全攻略
- 加權(quán)分?jǐn)?shù)傅里葉變換及其在通信系統(tǒng)中的應(yīng)用
- Android移動應(yīng)用開發(fā)基礎(chǔ)教程(微課版)
- 從算法到電路:數(shù)字芯片算法的電路實現(xiàn)
- 5G賦能智能制造
- 光傳送網(wǎng)(OTN)技術(shù)的原理與測試
- 通信員指導(dǎo)手冊
- 通信專業(yè)綜合能力與實務(wù):設(shè)備環(huán)境
- INSTANT Wireshark Starter
- 新一代移動融合網(wǎng)絡(luò)理論與技術(shù)
- 下一代互聯(lián)網(wǎng)IPv6過渡技術(shù)與部署實例
- 基于腦電信號創(chuàng)業(yè)勝任力綜合測評
- 電子裝備防護(hù)涂層體系環(huán)境試驗技術(shù)