摘要:本文只是尋找設計模式在中的應用。來補全這一塊工廠模式中的應用包線程池解釋和代碼線程池中有線程創建工廠。狀態模式中的應用解釋和代碼根據一個指針的狀態而改變自己的行為適配器模式中的應用解釋和代碼將一個類的接口轉換成客戶希望的另外一個接口。
前言
最近重學設計模式,而且還有很多源碼要看。所以就想一舉兩得。從源碼中尋找設計模式。順便還可以看看源碼。。。
本文只是尋找設計模式在java中的應用。優缺點就不細說了。而且也不可能將jdk中所有涉及設計模式的例子都舉出來。希望大家積極評論。來補全這一塊
java.sql包
線程池
線程池中有線程創建工廠。應用了工廠模式
策略模式 jdk中的應用JAVA AWT 中的 LayoutManager
Comparator
在集合元素的比較中,可以傳入一個comparer。不同的comparer有不同的比較策略
裝飾者模式 jdk中的應用java.io包
解釋和代碼裝飾者模式可以動態地給一個對象增加其他職責,就擴展對象功能來說,裝飾者模式比生成子類更為靈活。在由InputStream,OutputStream,Reader和Writer代表的等級結構內部,有一些流處理器可以對另一些流處理器起到裝飾作用,形成新的,具有改善了的功能的流處理器。
代理模式 jdk中的應用jdk中的Proxy類
解釋和代碼Proxy類可以動態代理生成代理對象
原型模式 jdk中的應用java的clone方法
解釋和代碼原型模式(Prototype Pattern)是用于創建重復的對象,同時又能保證性能
clone是基于內存級別的復制。不是用構造方法。創建重復對象性能更高
java.io.InputStream, java.io.OutputStream, java.io.Reader和java.io.Writer的所有非抽象方法
java.util.AbstractList, java.util.AbstractSet和java.util.AbstractMap的所有非抽象方法
父類實現關鍵步驟,子類實現了具體步驟
外觀模式 jdk中的應用java.lang.Class
java的三層開發模式
Class.forName方法生成一個Class對象。作為對對象操作的總入口。
建造者模式 jdk中的應用java.lang.StringBuilder
java.lang.StringBuffer
StringBuilder和Stringbuffer可以擴展原對象不同的字符串也可以按不同的順序拼接
觀察者模式 jdk中的應用java.util.Observer接口
解釋和代碼這個接口好像我平時開發沒用到。他的所有實現類都是在sun包的。
狀態模式 jdk中的應用java.util.Iterator
解釋和代碼根據一個指針的狀態而改變自己的行為
適配器模式 jdk中的應用java.util.Arrays.asList()
java.io.InputStreamReader(InputStream)
將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。
Arrays將集合轉換為list。Inputstream轉換成reader
java.util.Map#putAll(Map)
java.util.List#addAll(Collection)
java.util.Set#addAll
組合模式用于把一組相似的對象當作一個單一的對象。和對象組合成集合一致
迭代器模式 jdk中的應用java.util.Iterator
java.util.Enumeration
提供一個一致的方法來順序訪問集合中的對象,這個方法與底層的集合的具體實現無關。
單例模式 jdk中的應用java.lang.Runtime
。。。。
private static Runtime currentRuntime = new Runtime(); public static Runtime getRuntime() { return currentRuntime;橋接模式 jdk中的應用
java.sql.DrivenManager
解釋和代碼
通過上圖可以看出,基于JDBC的應用程序,使用JDBC的API,相當于是對數據庫操作的抽象的擴展,算作橋接模式的抽象部分;而具體的接口實現是由驅動來完成的,驅動這邊自然就相當于橋接模式的實現部分了。而橋接的方式,不再是讓抽象部分持有實現部分,而是采用了類似于工廠的做法,通過DriverManager來把抽象部分和實現部分對接起來,從而實現抽象部分和實現部分解耦
java.lang.Runable和線程池
解釋和代碼Runnable:任務抽象,也就是“命令”;線程池通過submit,execute調用
職責鏈模式 jdk中的應用jsp servlet 的 Filter
解釋和代碼多個過濾器過濾,滿足條件則跳轉入下一個過濾器
中介者模式 jdk中的應用線程池的executer.execute方法
我覺得mvc模式可能更好理解
Controller作為view和model的中介。使model和view透明化轉換
享元模式 jdk中的應用java.lang.String
解釋和代碼享元模式嘗試重用現有的同類對象,如果未找到匹配的對象,則創建新對象。String的常量池正是如此
解釋器模式 jdk中的應用java.util.Pattern
java.text.Normalizer
java.text.Format
這個模式通常定義了一個語言的語法,然后解析相應語法的語句。簡單地說就是規定了格式
訪問者模式 jdk中的應用javax.lang.model.element.AnnotationValue和AnnotationValueVisitor
javax.lang.model.element.Element和ElementVisitor
javax.lang.model.type.TypeMirror和TypeVisitor
好像都沒用過。。。。以后補上
空對象模式 jdk中的應用java.util.Collections#emptyList()
java.util.Collections#emptyMap()
java.util.Collections#emptySet()
一個空對象取代 NULL
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71315.html
摘要:到年將提供修復和安全更新。中期版本將每六個月發布一次。將擴展類文件格式以支持新的常量池形式。將提供一個低開銷的數據收集框架,用于對應用程序和進行故障排除。項目負責人表示,維護成本和低使用率并不能證明其保留是合理的。將是第一個獲得支持的平臺。 Java JDK 11刪除了CORBA,Java EE和JavaFX支持,但添加了十幾個主要新功能。 Java Development Kit(J...
摘要:是一個倡議,它提倡提供一種帶有非阻塞背壓的異步流處理的標準。是標準的實現之一。的實現細節請求響應的與請求響應的暴露為是請求的的消費者是響應的的生產者內部的內部 北京時間 9 月 26 日,Oracle 官方宣布 Java 11 正式發布 一、JDK HTTP Client介紹 JDK11中的17個新特性 showImg(https://segmentfault.com/img/remo...
摘要:語言通過字節碼的方式,在一定程度上解決了傳統解釋型語言執行效率低的問題,同時又保留了解釋型語言可移植的特點。有針對不同系統的特定實現,,,目的是使用相同的字節碼,它們都會給出相同的結果。項目主要基于捐贈的源代碼。 本文來自于我的慕課網手記:Java編程中那些再熟悉不過的知識點,轉載請保留鏈接 ;) 1. 面向對象和面向過程的區別 面向過程 優點: 性能比面向對象高。因為類調用時需要實例...
摘要:近期在閱讀最新幾版的官方文檔過程中發現不少術語不清之處特發此文總結以下的術語大量在官方文檔中直接出現且直接如基本詞語一樣使用不理解它們會嚴重影響閱讀自適應自旋鎖自適應自旋鎖是一個允許線程在特定點自旋等待特定事件發生而不是直接進行并等待該事件 近期在閱讀JAVA最新幾版的官方文檔過程中發現不少術語不清之處,特發此文總結.以下的術語大量在官方文檔中直接出現,且直接如基本詞語一樣使用,不理解...
摘要:語言通過字節碼的方式,在一定程度上解決了傳統解釋型語言執行效率低的問題,同時又保留了解釋型語言可移植的特點。有針對不同系統的特定實現,,,目的是使用相同的字節碼,它們都會給出相同的結果。 showImg(https://segmentfault.com/img/bVbsjCK?w=800&h=450); 一、面向對象和面向過程的區別 面向過程優點: 性能比面向對象高,因為類調用時需要實...
閱讀 2128·2021-09-27 14:04
閱讀 1873·2019-08-30 15:55
閱讀 1698·2019-08-30 13:13
閱讀 1065·2019-08-30 13:07
閱讀 2742·2019-08-29 15:20
閱讀 3240·2019-08-29 12:42
閱讀 3324·2019-08-28 17:58
閱讀 3593·2019-08-28 17:56