Builder模式在網站自動生成系統中的應用

banq發表於2002-09-02
一個網站的生成,包括複雜的建立過程,採取的技術不同,這個建立過程就不一樣,所以類似Jive的forumFactory,在該系統中也有一個SiteFactory,用來定義不同的站點生成工廠。

現在看看我的系統中站點的生成過程:
1.生成站點結構
2.生成按鈕button
3.生成同級別中的集合buttons
4.更新同級別中頁面指向新頁面的連結
5.生成新的頁面

這5步可以看成是5個部件,這個5個部件中任何一個的組裝相當複雜。

我們再看看將這5個部件組裝起來的過程也比較複雜,站點管理中有刪除頁面 增加頁面,這兩中過程都要涉及上面5個部件,但過程次序不一樣。

根據Builder模式過程和部件分離的宗旨,很明顯這裡需要使用builder模式,這樣可以將組裝站點的過程和5個部件解耦。

設計後,存在下列幾個主要class:
Pagebuilder 這是一個抽象類,封裝了上面5個部件的組裝方法,需要具體定義的有3個。

addPageBuilder 增加新頁面,繼承pageBuilder類,具體實現需要具體定義的部件組裝方法,如增加結構 增加子選單按鈕。

delPageBuilder 刪除頁面 繼承PageBuilder類,是其concrete之一,主要定義部件的拆裝方法。

IniPageBuilder 初始化頁面,站點第一次建立,需要一些初始化頁面,也是PageBuilder的concrete之一。


PageDirector 封裝站點的組建過程,比如Conctruct方法,就是封裝了增加頁面的組建過程,把PageBuilder中5個部件調出來,依據不同的條件和次序排列出增減頁面的組建過程。


客戶端呼叫,比如新增頁面:
PageBuilder pageBuilder=new addPageBuilder(this,title,name,icon,description);
PageDirector pagedirector = new PageDirector(pageBuilder);
pagedirector.constructNewPage(previd,pid);

相關文章