Foreword 抽象和接口是Java中的兩個關鍵字,也是兩種最基本的優(yōu)化軟件項目手段。為什么說它們是一種優(yōu)化項目的手段? 人分三六九等,不同等級的人,所接觸的事和處理的事是不一樣的。同理,項目也分大項目和中項目和小項目,大、中、小項目所承載的目標也是不一樣的。 先說小項目,如果你使用Java只是寫
抽象和接口是Java中的兩個關鍵字,也是兩種最基本的優(yōu)化軟件項目手段。為什么說它們是一種優(yōu)化項目的手段?
人分三六九等,不同等級的人,所接觸的事和處理的事是不一樣的。同理,項目也分大項目和中項目和小項目,大、中、小項目所承載的目標也是不一樣的。
先說小項目,如果你使用Java只是寫一個小腳本,比如更新一下系統(tǒng)時間,自動點擊某個軟件按鈕,修改表格數據...類似這樣的功能。對于這種小項目,項目里無非三、兩個功能函數,有個Main按照順序調用一下即可,那么這種項目就永遠都不需要使用到抽象和接口。用了反而是累贅,有畫蛇添足的味道。
但是對于大項目就不同了,比如一個大型的電商系統(tǒng),用戶的需求多、使用人群廣、數據類型多且需要一定關聯度。商品種類多、店鋪的類型各異...,當然這些都是在系統(tǒng)設計階段的麻煩。在開發(fā)階段的麻煩是,不同項目組的人都做不同的模塊,一個項目組的人怎么配合也是麻煩,最后數據對接起來也是麻煩、前后端之間的數據對接...,怎么樣,想想都頭疼了吧。
為什么說有了抽象和接口,能給大型項目帶來便利、優(yōu)化?
一些前人留下了一些經典的設計模式,比如單一模式,指在設計的時候要保證類的單一功能,如果完全按照這種模式,那么業(yè)務的實現會變成無數個類,并且代碼間非常耦合,在修改業(yè)務需求和代碼的時候,都是一場災難。
接口則是解耦的最基本工具,接口允許將方法的定義與其實現分開,這種分離使得多個不相關的類能夠實現同一組方法,從而保證了項目中不同部分之間的相互通信。
抽象類非常適合多個子類共享共同特征和屬性,但也兼容自己獨有的行為情況,同時為子類的定制實現留出空間。
這個現象讓我想到對有序數組的排序:
就類似對有序數組進行排序,使用冒泡排序和二分查找算法去實現,雖然都能完成這個效果。但是它們的時間復雜度差異也很大,差了一個數量級。
同樣的,你不使用抽象和對象也一樣能實現大型項目,但是效果不一樣,在管理的復雜度上也不一樣。
如果說冒泡和二分體現的差異在時間和空間上。那么設計不合理的項目,就體現在在代碼的工作量上。
當然,項目中增加了抽象和接口,新人的理解難度也直線上升,這也逼迫這個項目的程序員都必須得安裝OOP思想,才能上手這種項目。
小編推薦閱讀