原创 第十四篇:原型模式

原型模式就是用來生成同樣的對象的!比如你的簡歷,你創建好一份簡歷之後,通過打印機不斷的打印就能創建出多份相同的簡歷出來,這些簡歷內容都是一模一樣的,用程序來表示的話,就是雖然對象不同(內存地址不同),但屬性都是一模一樣... 我們看看如果

原创 IOC實現之XML元素解析過程(三)

接着上篇文章的最後代碼繼續我們接下來的分析,接下來會進入下述方法中; //註冊beanDefinition public int registerBeanDefinitions(Document doc, Resource reso

原创 第八篇:單例模式

關於單例模式我並不想做過多解釋,網絡上有一大堆關於它的定義,簡而言之,單例就是指單個對象,整個程序的運行生命週期內某個對象只會生成一次! 這麼做有什麼意義呢?很簡單,你的電腦開機,有多個回收站對象會有什麼後果?你刪掉一個文件它該被放入哪個

原创 IOC實現之容器啓動與資源定位(二)

回到我們的代碼之中,當我們 new ClassPathXmlApplicationContext()時,就代表着在創建一個普通環境上下文,在其構造器中打下斷點,我們跟隨着斷點一步步來往下看; public ClassPathXmlApp

原创 第十一篇:迭代器模式

迭代器模式其實還是非常好理解的,因爲我們無時無刻都在使用着迭代器模式,當我們用foreach語法遍歷List集合,Set集合的,Map集合的時候,無形中就用到了java實現的迭代器,比如這樣: public static void m

原创 第十篇:模板方法模式

我們先來談談 "模板" 的概念,什麼是模板? 很簡單嘛,直接上圖! 這就是一個模板!它定義了基本的樣式,整個文檔結構,內容大綱,而你要做的,就是再某些地方寫上自己的內容就可以了! 讓我們用代碼來舉一個模板方法的例子吧! 我們擬定一個炒

原创 第十二篇:組合模式

我們先了解一下組合模式吧!組合模式指的是對象的組合,組合模式可以以樹狀形式來描述對象與對象的一組孩子之間的層次關係,運用組合模式,可以讓個體以及個體下的組合(一組對象) 都使用同樣的編程模型!也就是說,如果用了組合模式,無論是枝幹節點還是

原创 第十六篇:備忘錄模式

說在開頭:其實我個人並不認爲這是什麼設計模式...因爲完全沒有什麼價值嘛,不過既然多本書上對其有介紹,那我還是寫一下吧! 備忘錄模式是用來實現 備份,還原 的一種代碼組織結構;  什麼時候需要備份還原呢?非常常見的是遊戲中的保存進度, 打

原创 第十七篇:橋接模式

說在開頭:我並不認爲這是什麼設計模式,正常人就應該是這麼思考的...不過書上既然都有寫,我也就隨意說一下吧! 此模式主要通過組合與聚合的方式用來解決複雜的類關係問題,通過抽象出多個類,從多個維度來描述解決問題,從而讓混亂的類關係結構變得清

原创 第十九篇:代理模式

代理模式大家應該都非常熟悉了吧,我們的spring中到處使用了代理,比如我們用聲明式事物,寫一個事物註解,當我們在調用目標對象的某個方法前,spring會先爲我們開啓一個事物,方法調用結束,spring會爲我們提交事物...看起來我們好像

原创 IOC實現之總結篇(六)

經過5篇文章,IOC的實現過程基本上已經講清了,當然,還有些我沒有講,比如我們的組件掃描註解的實現又是怎樣的,這點我原本打算寫篇文章但想想還是放棄了,因爲沒有必要,看完上面5篇文章,相信你自己已經完全可以去理清註解的實現了! 再回到IO

原创 第十八篇:責任鏈模式

責任鏈就是鏈條式處理請求,當我們的請求到來,會經過一條對象鏈,這條鏈上有多個節點對象,它們都會對請求的數據進行解析處理, 這樣的話, 後期如果要增加新的功能,只需要在鏈條中增加一個節點就可以了! 就像我們servlet中Filter一樣,

原创 寫在開頭:你爲什麼需要知道原理與解析準備工作

我一直對自己也對別人說,在你剛開始接觸某件事物時,知其然而不知其所以然這是沒有任何問題的,畢竟透過現象看本質這需要經驗的累積與沉澱,然而,在我們編程這個行業,有太多工作三年,五年甚至更久的同學對自己經常所使用接觸的技術還停留在會用的階段;

原创 IOC實現之XML元素解析過程(四)

接着上篇文章我們繼續來做構造器配置與屬性配置的解析過程分析; 我們先來看看BeanDefinitionParserDelegate是怎麼來解析構造屬性配置的; public void parseConstructorAr

原创 IOC實現之Bean的初始化(五)

現在我們開始來解析Bean的初始化過程,通過先前的一系列代碼分析,我們得知當BeanFactory構建好後,也就意味着我們的bean配置全部轉換成了BeanDefinition類且註冊到了當前beanFactory之中,但此時Bean還沒