1. 程式人生 > >javaSE中的GOF設計模式

javaSE中的GOF設計模式

ret 行為 子接口 我們 策略 就會 裝飾器 超級 先生

javaSE中的GOF設計模式

這裏就javaSE中常用的設計模式進行一個總結。

什麽是設計模式?

能夠被重復利用的解決方案就是設計模式。

常用的設計模式有哪些?

常用的設計模式有GOF設計模式和javaEE設計模式。

GOF設計模式有哪些類型?

- 對象創建型 是在對象創建過程中的設計模式。例如:單例模式

- 結構型 是用更多的類,更多的方法、對象組建一個更大的結構。例如:適配器模式、裝飾器模式

- 行為型 涉及到行為、算法的設計模式。例如:策略模式

javaSE中的GOF設計模式  

- 集合中 叠代子模式、策略模式

  叠代子模式:在集合中,所有collection接口以及他的子接口都實現了iterable接口,意味著這些類都可以進行叠代。叠代子模式是說不需要知道底層的具體的存儲結構和存儲細節,統一面向Iterator接口進行叠代。例如:HashSet底層是哈希散列表的數據結構,TreeSet底層是二叉樹的數據結構,ArrayList底層是數組,LinkedList底層是鏈表,但是他們都可以進行叠代,就是說不需要知道底層的存儲細節,統一面向Iterator接口進行叠代。

  策略模式:比較器互換體現了策略模式。在TreeSet中有兩種方案實現排序。方案一是,在實體類中實現Comparable接口,重寫compareTo方法,這種方法是一種侵入式的方法,並且每次修改比較規則時都需要對源代碼進行修改,所以不推薦這種方法;方案二是,另外創建一個比較器類,實現Comparator接口,重寫compare方法,采用這種方法可以創建多個比較器,需要使用哪個比較規則就傳入哪個比較器到TreeSet中,這種比較器互換的思想正是體現了策略模式。

- io中 適配器模式、裝飾器模式

  適配器模式:在io中有很多地方體現了適配器模式。它的原理是:適配器模式是有一個超級接口,超級接口上有很多個抽象方法,有一個實現類只需要使用某個方法,如果直接實現超級接口的話,就需要將所有的方法全部實現,這種代碼是非常醜陋的;這時候超級接口和實現類之間加一個適配器的抽象類,由適配器的抽象類去實現超級接口,將所有的方法實現了,只將實現類需要使用的方法設為abstract的,由實現類去繼承適配器抽象類,這時候就只需要將適配器的抽象類實現了就可以了,這種代碼是非常優雅的。除此之外,在servlet中也使用到了適配器設計模式,servlet的超級接口中有五個方法service、init、desotry、getServletInfo、getServletConfig,如果直接繼承servlet接口就需要將這五個方法全部實現,而我們一般只使用service方法,所以在這裏由GenericServlet實現servlet接口,將service以外的方法實現只留下service的抽象方法由我們去重寫,這就體現了適配器模式的思想。

  裝飾器模式:io中的關閉流的時候,只需要關閉高級流,低級流就會自動被調用,這裏的源代碼體現出了裝飾器模式。裝飾模式就是在原來的類上進行修飾,將功能進行擴展。

歡迎交流 張先生 [email protected]

javaSE中的GOF設計模式