[EnterpriseLibrary]Microsoft.Practices.ObjectBuilder全域觀

來源:互聯網
上載者:User
  上回我們偷偷看了Microsoft.Practices.ObjectBuilder(以下把它稱為OB)中的定位器Locator,這回我們從整體上來看看這個Framework。要想真正瞭解OB的使用方法當然就要對他有個整體的認識,我們想學她,當然是為了要用它,但最重要的是可以通過分析它的機理來鞏固我們的知識。但對於一個不是很小的類庫來說,想一下子瞭解他是不可能的,更何況OB連文檔都是null,所以只能一步一步的慢慢的拆開他。其實不用我們怎麼拆,因為源碼已經把各個相關的放在單獨的檔案夾裡了。好了閑話不多說了,一起上吧!

  在OB裡有幾個相當重要的類,下面我們來看看吧!

  Strategies和Policies:OB是基於策略和方針。通過策略鏈(這裡運用了責任鏈設計模式)可以搜尋到已被註冊過的策略;策略利用方針指出怎樣來建立一個對象;方針向OB註冊一個類型。值得一提的是在OB中每一個註冊的對象都包含一個ID和類型,這樣可以通過ID來檢索對象;

  Locator:定位器當然是用來搜尋已經註冊過的對象,當一個對象被建立時,他就向定位器註冊,以便後面檢索。可以在CreationStrategy類中的RegisterObject方法看到;

  LifeContainer:從字面上我們就可以看到應該是生存期容器(但不知道有沒有更好的說法),每一個對象都有自己的生存期,在OB中LifeContainer就是包含一系列對象Object的列表,由於對象包含在LifeContainer中,當然如果釋放(Disposed)LifeContainer,列表中的所有對象都將被釋放。

  BuilderContext:上下文貫穿對象建立的整個過程(也就是說從一個對象的BuildUp到TearDown),上下文中包含Strategies,Policies以及Locator同時還提供了一個迭代策略鏈的方法。

  理解了以上幾個重量級的類,對建立一個對象就不是有很大的問題了,當然想構建很複雜的對象還是要更深入的瞭解,我將會慢慢的把一些例子和方法搬上來。根據我的瞭解和總結一般要建立一個方法需要包含以下幾個步驟,當然也許不是一定要經過這幾個步驟。下面我們來看看這些步驟吧!

  1.要建立一個對象我們要知道需要多少元素才能完成對象的建立對象,總的說來我們需要一個定位器Locator,一個策略鏈BuilderStrategyChain以及一系列的策略和方針Policies;其實我們都是為建立上下文BuilderContext作準備。

  2.有了策略鏈當然要往裡面灌輸策略了,每一個策略對應有一個對應的方針(可能不一定一個或更多,這裡還需要更深入的研究,如果不對請多指教);而且建立一個對象一般都要包含一個CreationStrategy。

  3.有了策略,當然我們要為每一個原則設定相應的方針,通常對應CreationStrategy策略的方針都用預設的DefaultCreationPolicy ,當然也可以有其他的方針。

   4.以上的條件都具備時,要建立一個上下文還缺少一個定位器Locator,我們也需要一個LifeContainer來儲存對象。

   5.建立上下文BuilderContext,到這裡基本上已經解決了,利用策略鏈裡的BuildUp方法就解決了。

    策略是要告訴我們用什麼方針來完成,而方針是註冊一個物件類型,通過定位器我們可以獲得登入(檢索登入的對象)或未註冊(那就建立新對象)的對象。今天就先說到這裡了,如果有什麼不對的地方請多指教。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.