gof 设计模式 java_javaSE中的GOF设计模式
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中的關閉流的時候,只需要關閉高級流,低級流就會自動被調用,這里的源代碼體現出了裝飾器模式。裝飾模式就是在原來的類上進行修飾,將功能進行擴展。
歡迎交流 張先生 zg_199101@163.com
總結
以上是生活随笔為你收集整理的gof 设计模式 java_javaSE中的GOF设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开发测试比
- 下一篇: DOM-1 DOM初探、JS对象、XML