JDK 源碼 閱讀 - 2 - 設計模式 - 建立型模式

來源:互聯網
上載者:User

標籤:jdk 源碼 設計模式

A.建立型模式

  1. 抽象工廠(Abstract Factory)

    javax.xml.parsers.DocumentBuilderFactory

  650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6F/A6/wKiom1Wjy1-R1kHUAADm1diI0RY705.jpg" title="AbstractFactory DocumentBuilderFactory.jpg" alt="wKiom1Wjy1-R1kHUAADm1diI0RY705.jpg" />

DocumentBuilderFactory通過FactoryFinder執行個體化具體的Factory.


使用例子:DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();Document doc = docBuilder.parse (new File("xxx.xml"));


  javax.xml.transform.TransformerFactory

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6F/B1/wKiom1WlGZmgxa6gAAE7aRCpl9c233.jpg" title="TransformerFactory.jpg" alt="wKiom1WlGZmgxa6gAAE7aRCpl9c233.jpg" />

 使用例子: StreamSource source = new StreamSource(...); StreamSource stylesource = new StreamSource(...); TransformerFactory factory = TransformerFactory.newInstance(); Transformer transformer = factory.newTransformer(stylesource); StreamResult result = new StreamResult(System.out); transformer.transform(source, result)

   

  javax.xml.xpath.XPathFactory

   The structure is almost the same as the previous two.

XPathFactory xpathFactory = XPathFactory.newInstance();XPath xpath = xpathFactory.newXPath();XPathExpression expr = xpath.compile(XPATH_EXPRESSION_STRING);Object result = expr.evaluate(Object item, QName returnType);

 


2.產生器模式(Builder)

 java.lang.Appendable

 java.lang.StringBuilder#append()

 java.lang.StringBuffer#append() 

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6F/BB/wKiom1WmZcWRsuYhAADz5E0mWPM594.jpg" title="StringBuilder.jpg" alt="wKiom1WmZcWRsuYhAADz5E0mWPM594.jpg" />

這裡我們看到狀態的轉換操作都會返回原來的類型的對象,這樣就可以構建產生鏈。


 java.nio.ByteBuffer#put() (CharBuffer, ShortBuffer, IntBuffer, LongBuffer, FloatBuffer 還有 DoubleBuffer)

參見上例。


3.Factory 方法(Factory method) 

 java.util.Calendar#getInstance()

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6F/B8/wKioL1Wma_ujElhuAADSTk71wnQ429.jpg" title="Calendar-Factory Method.jpg" alt="wKioL1Wma_ujElhuAADSTk71wnQ429.jpg" />

Factory 方法的構造方法就在所要產生的類型上。 這個抽象工廠有很大不同。

其它的可參見:

 java.util.ResourceBundle#getBundle()

 java.text.NumberFormat#getInstance()

 java.nio.charset.Charset#forName()

 java.net.URLStreamHandlerFactory#createURLStreamHandler(String) 

4.原型模式(Prototye)
  • java.lang.Object#clone()


5.單例模式(Singleton) 

 java.lang.Runtime#getRuntime()

 java.awt.Desktop#getDesktop()



JDK 源碼 閱讀 - 2 - 設計模式 - 建立型模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.