1. 程式人生 > >java中的設計模式及類部類的定義與使用

java中的設計模式及類部類的定義與使用

1.    設計模式:主流的設計模式主要有23種,它們的特點是實用性好,程式碼簡潔,結構美觀著稱。

2.    架構模式:目前主流的架構模式主要有B/S架構,和C/S架構,判斷一種架構屬於哪一種架構,主要看其邏輯程式碼的位置,若邏輯程式碼在伺服器,屬於B/S架構,若在客戶端,則表示屬於C/S架構,B/S架構是一種輕量級、方便升級和修改,越來越多的軟體採用該架構,尤其是企業裡;C/S適用於必須依賴客戶端,依賴大運算的軟體,特別是遊戲類的軟體,主要特點是速度快,但不便於升級和更新。

3.    設計模式和架構模式的區別和聯絡:架構模式屬於一種戰略模式,而設計模式只是一種戰術模式,是一個整體與區域性的關係。

4.

    簡單工廠模式:不屬於23種經典設計模式之內的一種入門的建立性的模式,物件的批量生產,例如:

a)     定義一個售票員介面,裡面宣告三個方法

                                                                        i.          void  找錢();

                                                                       ii.          void 查詢();

                                                                     iii.

          void  出票();

b)     新建三個售票員介面的實現類,分別實現了售票員介面的類分別是:售票員實現類A,售票員實現類B和售票員實現類C

c)     新建一個Factory工廠類,在裡面編寫一個建立售票員物件的方法

d)    

                                            i.          擴充套件一:

如果感覺售票員的實現類不夠,可以增加一個售票員的實現類,以完成功能的新增

                                           ii.          擴充套件二:

如果售票員A

想增加一個唱歌的方法,就需要新建一個一個A1類去繼承售票員A的類,再實現一個介面,該接口裡定義了一個唱歌的方法即可。、

                iii.擴充套件三:

如果售票員A的某些方法過時了,可以為A類增加一個子類,重寫父類的的該過時的方法。

5.    工廠模式的優點:工廠模式是一種隱藏式的建立物件,將建立物件的過程隱藏,只需要呼叫工廠類的方法去建立物件,而不考慮介面的實現類,是一種面向父類的程式設計。

6.    單例模式:單例模式就是定義一個只能生成一個唯一的例項物件的類,適用於類似於地球,太陽,月亮型的型別定義,它的訪問頻率很高,但不能作為資訊的記載者的情況,單例模式分為懶漢式單態和餓漢式單態,它們分別是:

a)     懶漢式單態:用的時候在構造物件,優點是不提前載入資源,但範問速度較慢,懶漢式單例模式的例項物件的方法必須加上 synchronized 關鍵字,可以處理多工的併發訪問。

b)     餓漢式單態:一開始就夠造好物件,優點是訪問速度快,但是提前載入資源,有可能造成浪費。

7.    內部類:定義在一個類裡面的類,即一種類中類,主要有以下特點:

a)     可以看做是其包含類的屬性;

b)     通過類名.靜態方法和屬性來訪問;

c)     內部類可以直接訪問外部類的屬性和方法;

d)     若內部類是靜態的,只能訪問外部類的靜態成員;

e)     外部類可以直接new 一個靜態的內部類物件;

8.    匿名內部類(還有內部介面):匿名內部類沒有類名,只有方法實現,一般的格式都是:

a)     new 介面名/抽象類名/普通類名(){},分別表示{}括號類立即實現介面/繼承抽象類/繼承普通類並選擇性的重寫父類方法

b)     其位置是定義在方法和屬性上使用;

c)     生成的class檔案,若是第一個匿名內部類,第二個依次類推,表示為:

                                                                        i.          Test$1.class

                                                                       ii.          Test$2.class

                                                           …

                                                                     iii.          Test$n.class

9.若是方法裡使用匿名內部類,該匿名內部類中的方法要訪問該方法裡定義的區域性變數,該區域性變數必須定義為final 型別的,因為例如該屬性為 age ,如果不是final型別的,內部方法就不能訪問,age只是一個變數,會隨著程式的執行而動態的改變,而final修飾的變數是一個不能改變的常量,也就是說age的值是一個常量的地址,該地址是不會發生變化的,所以我們可以通過地址訪問該常量,而不會出現錯誤。

相關推薦

no