亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Jive中的設(shè)計(jì)模式

2019-11-18 14:02:49
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  馬旋


摘要:Jive 是一個(gè)開放源碼的論壇項(xiàng)目, 也就是我們所常見的 BBS, 采用了 SUN 公司的 jsp 技術(shù), 相比起 j2ee 這個(gè)龐大的體系結(jié)構(gòu), 其整個(gè)的設(shè)計(jì)思想非常精煉, 適用于中小型網(wǎng)站, 建立自己的論壇系統(tǒng). 這篇文章我們就一起來(lái)看一看 Jive 中所應(yīng)用的設(shè)計(jì)模式(Design Pattern).
關(guān)于設(shè)計(jì)模式, 這篇文章并不具體解釋, 只是結(jié)合 Jive 來(lái)看看設(shè)計(jì)模式在一個(gè)實(shí)際項(xiàng)目中的應(yīng)用及其整體的設(shè)計(jì)思想. 所以在讀這篇文章前, 假設(shè)您對(duì)設(shè)計(jì)模式有一個(gè)感性的熟悉, 對(duì)其具體應(yīng)用以及實(shí)現(xiàn)方法有些疑問(wèn), 并渴望了解其思想,并使用過(guò) Jive. 本文將一同來(lái)探討這個(gè)問(wèn)題. 為什么選擇 Jive 而不是選擇一個(gè)新的例子重新開始呢? 有以下兩個(gè)原因: 1, 我們很多人對(duì) bbs 這樣一個(gè)事物比較熟悉,很清楚 bbs 所具有的一些基本功能, 假如自己作為設(shè)計(jì)者來(lái)設(shè)計(jì)這樣一個(gè) web bbs,會(huì)怎么想, 再看看別人是怎么實(shí)現(xiàn)的, 有對(duì)比才能明白自己設(shè)計(jì)上的缺點(diǎn), 看到別人的優(yōu)點(diǎn)才能更快地進(jìn)步. 2, Jive 并不是非常地復(fù)雜, 并且包括了一個(gè)完整的實(shí)現(xiàn)方案, 從底層到高層, 從后端到前端, 都有很好的文檔, 這些都能更好地幫助我們理解它.

這里我們所用的 Jive 的版本采用其開發(fā)者作為正式發(fā)布的 1.0 版, 其最新版為 1.21, 對(duì)其結(jié)構(gòu)作了少量改動(dòng), 主要增加了 jsp tag 的支持, 這種技術(shù)不屬于我們的討論范圍, 以后有機(jī)會(huì)可以共同學(xué)習(xí).

Jive 中所使用的設(shè)計(jì)模式, 對(duì)設(shè)計(jì)模式的三種類型 -- 創(chuàng)建型, 結(jié)構(gòu)型,行為型 -- 都有涉及, 這樣也能比較全面地了解設(shè)計(jì)模式. 我們先來(lái)自己設(shè)計(jì)一下,運(yùn)用面向?qū)ο蟮乃枷? 可以很輕易知道, 整個(gè)系統(tǒng)主要需要這幾個(gè)對(duì)象:

Forum   --  一個(gè)討論區(qū), 也就是一個(gè)版面.
Thread  --  一條線索, 也就是有關(guān)同一個(gè)主題的所有的回文.
Message  --  一條消息, 也就是一個(gè)用戶發(fā)的一篇貼子.(以后我們就用"貼子"這個(gè)叫法)
User   --  一個(gè)用戶, 也就是討論區(qū)的使用者.
好了, 我們需要的東西都在了, 它們之間的關(guān)系十分復(fù)雜, 怎么把它們組織地很符合我們的思路又能輕易擴(kuò)充呢? 我想大家都有自己的想法了, "我能這么這么做","我可以這樣這樣設(shè)計(jì)", 我們一起來(lái)看看 Jive 是怎么做的. 下面是其整體結(jié)構(gòu):
~~~~~~~~~~~~~~~~~~
SKIN 設(shè)計(jì)者
__________________

使用
/
~~~~~~~~~~~~~~~~~
各種對(duì)象的接口
_________________

被實(shí)現(xiàn)
/
~~~~~~~~~~~~
權(quán)限控制
____________

控制
/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的各種對(duì)象
_____________________________

取連接
/
~~~~~~~~~~~~~~~~
數(shù)據(jù)庫(kù)連接池
________________
(圖 1)



下面是其類的大概的繼續(xù)情況:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Interface A
___________________________________

implements

~~~~~~~~~~~~~~~~~
PRoxy A
_________________


~~~~~~~~~~~~~~~~~~
Database A
__________________
(圖 2)



好了看到這里, 假如您對(duì)設(shè)計(jì)模式有了解的話, 從上面所寫的偽名字中, 可以看到一些熟悉的東西. 請(qǐng)讓我做一些解釋. 上面的圖表示的是類的繼續(xù)關(guān)系, A 代表上面所提到的四種對(duì)象, Interface A 表示名為 A 的一個(gè)接口, 相信大家對(duì)接口都不生疏, 接口在 java 中有著重要的作用. Proxy A 表示一個(gè)名為 ProxyA 的類,實(shí)現(xiàn) A 接口. Database A 表示名為 DbA 的一個(gè)類, 實(shí)現(xiàn) A 接口. 但設(shè)計(jì)模式并沒有從中體現(xiàn)出來(lái),設(shè)計(jì)模式所要表現(xiàn)的是怎么樣更好地組織對(duì)象之間的邏輯關(guān)系,怎么樣才能更好地?cái)U(kuò)充現(xiàn)有的東西而不需要作很大的改動(dòng), 而不僅僅是類的繼續(xù).

還有一點(diǎn)需要說(shuō)明的是, 設(shè)計(jì)模式總的原則是針對(duì)接口編程, 而不關(guān)心其具體實(shí)現(xiàn), 這樣搭起來(lái)的是一個(gè)架子, 還需要作許多具體的編程才能真正的完成系統(tǒng).

下面, 我們就分別從設(shè)計(jì)模式的三種類型來(lái)看 Jive 使用了其中的哪些.

一, 創(chuàng)建型模式 (Creational Patterns)
這一類型的設(shè)計(jì)模式, 所要表現(xiàn)的是對(duì)象的創(chuàng)建過(guò)程及和用戶所使用的對(duì)象之間的關(guān)系.

Jive 中在 Forum 之上又加了一層, ForumFactory, 來(lái)實(shí)現(xiàn)對(duì) Forum 的一些控制, 比如創(chuàng)建新的討論區(qū), 刪除一個(gè)討論區(qū)等等. 這個(gè)類實(shí)際上是整個(gè)系統(tǒng)的入口,jsp 中所做的一切都要從得到這個(gè)類的一個(gè)實(shí)例開始. 它的一些子類和它的關(guān)系如下:
~~~~~~~~~~~~~~~~~
ForumFactory abstract
_________________

extends

~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
ForumFactoryProxy DbForumFactory
____________________ _________________

(圖 3)

我們來(lái)看一下得到一個(gè) ForumFactory 實(shí)例的過(guò)程:
FactoryForum factory = ForumFactory.getInstance(aAuthorization);就得到了 ForumFactory 的實(shí)例, 這個(gè)最終用戶(skin 設(shè)計(jì)人員)所使用的是它的子類 ForumFactoryProxy 的實(shí)例, (其中涉及到另一個(gè)模式, 后面將會(huì)提到), 但實(shí)際上真正在做實(shí)際工作的是 DbForumFactory 或者是一個(gè)指定的類的實(shí)例, 相關(guān)代碼如下:

From ForumFactory.java

private static String className = "com.coolservlets.forum.database.DbForumFaactory";
// 系統(tǒng)缺省的 ForumFactory 的一個(gè)具體的子類.

private static ForumFactory factory = null;

ForumFactory.getInstance()

String classNameProp = PropertyManager.getProperty("ForumFactory.className")
// 可以通過(guò)配制文件來(lái)選擇其他的具體的子類.

if (classNameProp != null) {
className = classNameProp;
}
try {
//Load the class and create an instance.
Class c = Class.forName(className);
factory = (ForumFactory)c.newInstance();
}
catch (Exception e) {
System.err.println("Failed to load ForumFactory class "
+ className + ". Jive cannot function normally.");
e.printStackTrace();
return null;
}


它使用的是 Abstract Factory (抽象工廠)設(shè)計(jì)模式. 給用戶一個(gè)使用一系列相關(guān)對(duì)象的接口, 而不需要指定其具體的類. 也就是說(shuō), skin 設(shè)計(jì)人員寫的 jsp 中不應(yīng)該出現(xiàn)new DbForumFactory 之類的語(yǔ)句. Jive 中 AuthorizationFactory 也使用了這個(gè)設(shè)計(jì)模式


Jive 中有一個(gè)很不錯(cuò)的想法, 就是對(duì)貼子的內(nèi)容和標(biāo)題可以進(jìn)行過(guò)濾, 比如過(guò)濾 Html過(guò)濾一些臟話, 對(duì)附加的代碼進(jìn)行高亮顯示, 轉(zhuǎn)換鏈接等等. 假如我要實(shí)現(xiàn)這樣的功能, 有有下幾種方法: (1) 在 Message.getBody() getSubject() 中進(jìn)行控制, (2) 在 Thread 中得得Message 后進(jìn)行轉(zhuǎn)換. 還需要考慮的問(wèn)題是這些過(guò)濾的操作必須能夠很方便地添加刪除. 不不的目標(biāo)所用的設(shè)計(jì)方法是不一樣的, Jive 是這樣做的: 以版面為主, 把這些過(guò)濾器看作是鞍婷的屬性, 過(guò)濾器只對(duì)其所屬的版面有效, 所以 Jive 中使用了 (2), 這并不是主要的, 重要要是這些過(guò)濾器該怎么來(lái)組織. 我們先來(lái)看看需求: 能動(dòng)態(tài)添加刪除, 功能類似, 貼子的顯示示其具體怎么創(chuàng)建, 如何表現(xiàn)無(wú)關(guān). 似乎目標(biāo)只有一個(gè) -- Prototype(原型) 設(shè)計(jì)模式. 看看Jive 的具體實(shí)現(xiàn). ~~~~~~~~~~~~~~~~~~~~
ForumMessage
____________________

implements

~~~~~~~~~~~~~~~~ Prototype ~~~~~~~~~~~~~~~~~~~~~
ForumThread -----------> ForumMessageFilter
---------------- ---------------------
getMessage() o clone()
_______________ _____________________
/
~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~
aFilter.clone() HighlightCode HTML
________________ --------------- ------------- ......
clone() o clone() o
______________ ____________

~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
返回一個(gè)實(shí)例 返回一個(gè)實(shí)例
_______________ _______________

(圖 4)

上圖作了少許的簡(jiǎn)化. Jive 用的時(shí)候是把這些過(guò)濾器存在數(shù)據(jù)庫(kù)中, 可以動(dòng)態(tài)設(shè)置屬性, 比較方便. 來(lái)看一些代碼:

From: DbForumThread.java

public ForumMessage getMessage(int messageID)
throws ForumMessageNotFoundException
{
ForumMessage message = factory.getMessage(messageID);

//Apply filters to message.

message = forum.applyFilters(message);

//通過(guò) Forum 來(lái)實(shí)現(xiàn), 因?yàn)?Filter 是 Forum 的屬性,
//Thread 只能通過(guò) Forum 的接口來(lái)訪問(wèn).

return message;
}

From: DbForum.java

public ForumMessage applyFilters(ForumMessage message) {

for (int i=0; i < filters.length; i++) {
message = filters[i].clone(message);
}

//可能會(huì)有多個(gè)過(guò)濾器, 依次來(lái)操作.

return message;
}

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
日韩视频久久| 在线观看欧美理论a影院| 精品一区二区三区人妻| 久久精品美女| 国模私拍视频在线播放| 手机看片福利在线| 一区二区的视频| 午夜在线a亚洲v天堂网2018| 高清不卡一区二区三区| 欧美一级专区| 一级理论片在线观看| 完美搭档在线观看| 亚洲高清av一区二区三区| 日韩av网站免费在线| 日韩精彩视频在线观看| 伊人久久99| 久久激情五月婷婷| 91av视频免费观看| 久久久人成影片一区二区三区在哪下载| 欧美人与动性xxxxx杂性| 免费观看成年人视频| 成人在线视频www| 国产毛片一区二区三区| 成年网站在线播放| 在线不卡视频一区二区| 亚洲精品99久久久久中文字幕| 特黄特色欧美大片| 欧美日韩精品免费在线观看视频| 特一级黄色片| 成年人视频免费在线播放| 日产精品一区| www黄色在线| 欧美成人高清在线| 欧美性猛交xxxxxx富婆| 性做久久久久久免费观看| 亚洲制服丝袜av| 日韩在线一级片| 俄罗斯毛片基地| 欧美色片在线观看| 免费成人午夜视频| 全网免费在线播放视频入口| 中文字幕一区在线观看视频| 欧美日韩精品一本二本三本| 素人fc2av清纯18岁| 538任你躁精品视频网免费| 欧洲成人在线观看| 首页欧美精品中文字幕| 人体内射精一区二区三区| avhd101老司机| 日韩精品一区二区三区免费观看| 久久久久观看| 国产精品永久在线| 日韩一区二区精品视频| 正在播放欧美一区| 色哟哟日韩精品| 午夜在线精品| 国产一区二区精品久久91| 群体交乱之放荡娇妻一区二区| 亚洲人成网址| 久久亚洲精品无码va白人极品| 亚洲午夜色婷婷在线| 久久亚洲电影| 欧美成人一级视频| 蜜桃视频成人m3u8| 亚洲a级黄色片| 亚州av在线播放| 国产污污在线观看| 宅男在线观看免费高清网站| 免费影视观看网站入口| 久久久成人av毛片免费观看| 精品乱子伦一区二区三区| 美女一区视频| 久久精品免费在线| 国产成人欧美日韩在线电影| 黄视频网站在线看| 亚洲91视频| 亚洲国产精品va在看黑人| 天天操综合520| 中文字幕日韩精品一区二区| 日韩一区二区三区精品| 久久资源亚洲| 欧美第一黄网| 亚洲最大在线| 精品久久久久人成| 国产专区中文字幕| 久久91精品国产| 欧美精品国产精品| chinese叫床对白videos| 国产人与zoxxxx另类91| 国产成人永久免费视频| 久久精品视频国产| 在线观看不卡视频| www.天堂乱色| 美女视频网站黄色亚洲| 天堂www中文在线资源| 毛片av免费观看| 国产福利不卡视频| 91精品国产吴梦梦| 欧洲性xxxx| 国语自产精品视频在免费| 精品亚洲一区二区三区四区五区高| 欧美在线高清| 无码免费一区二区三区| 日韩有码一区二区三区| 日本一区高清不卡| 麻豆蜜桃在线观看| 狠狠躁天天躁日日躁欧美| 久久九九有精品国产23| 精品国产乱码久久久久软件| 国产精品国产三级国产普通话蜜臀| 欧美激情在线观看视频免费| 欧美色精品天天在线观看视频| 国产精品一区二区美女视频免费看| 一级爱爱免费视频| 日本中文字幕中出在线| 日本色图在线| 欧美1区2区视频| 伊人久久久久久久久| 国内精品福利| 国产成人精品综合网站| 亚洲地区一二三色| 国产精品久久久久久久久果冻传媒| 亚洲一本二本| 在线免费观看a级片| 日韩一区二区三区电影在线观看| 亚洲精品乱码久久久久久9色| 欧美另类z0zxhd电影| 国产精品一区在线播放| 污视频网站在线看| 岛国片在线观看| 精品成人无码一区二区三区| 日本不卡一区二区在线观看| 午夜国产精品视频免费体验区| 成人午夜在线观看视频| 久久午夜av| 伊人五月天婷婷| 亚洲性生活视频在线观看| 青青草原成人| 深夜福利视频一区| 精品99又大又爽又硬少妇毛片| 亚洲电影视频在线| 一区二区三区四区免费视频| 99免费视频观看| 成人在线免费网站| 国产日韩亚洲精品| 欧美日韩高清免费| 伊人免费视频2| 91久久国产最好的精华液| 久久综合网hezyo| 国产精品福利一区二区三区| 日韩av不卡电影| 午夜亚洲性色福利视频| 热re99久久精品国产99热| 性欧美黑人xxxx| 国产午夜精品无码一区二区| 国产精品免费一区| 天天做天天爱天天综合网| 韩国三级在线观看久| 国产原创精品视频| 久草视频在线资源站| 欧美专区日韩视频| 米奇在线777| 日本午夜免费一区二区| 伊人色综合久久天天五月婷| 亚洲国产一区二区在线观看| 亚洲综合在线免费观看| 免费在线看a| 国产69精品久久久久9999人| 日韩成人伦理| 国内成人精品一区| 黄色网页大全| 无码国产69精品久久久久同性| 日韩三级视频在线观看| 综合欧美精品| 国产真人做爰视频免费| 精品黑人一区二区三区观看时间| 国产伦精品一区二区三区免费视频| 国产剧情av在线播放| 美女av一区二区三区| 日韩av在线精品| 做爰视频毛片视频| 亚洲六月丁香色婷婷综合久久| 高跟丝袜一区二区三区| 不卡在线观看av| 国产精品电影一区二区| 欧美一区2区三区4区公司二百| 欧美最顶级的aⅴ艳星| 欧美日韩在线观看免费| 中文字幕欧美日韩一区| 亚欧精品在线视频| 不卡一区中文字幕| 免费人成福利播放| 青草av在线| 日韩午夜精品视频| 久久国产人妖系列| 黄视频网站免费看| 亚洲精品99久久久久中文字幕| 欧美日韩一区二区在线免费观看| 国产伦精品一区二区三区视频我| 亚洲最大成人在线观看| 日韩中文字幕91| 亚洲欧洲日韩国产| 超碰人人爱人人| 亚洲国产日韩欧美在线图片| 国产成人无码精品久久久久| 天天av天天翘天天综合网| 老司机2019福利精品视频导航| 综合久久国产| 日韩永久免费视频| 亚洲激情五月婷婷| 亚洲乱熟女一区二区| 亚洲色图欧洲色图婷婷| 欧美精品momsxxx| 亚洲另类激情图| 日韩一区二区免费在线观看| 精精国产xxxx视频在线| 国产精品久久久久久久久妇女| 星空影院最新电视剧免费观看| 欧美一区二区三区爽大粗免费| 成年人黄色大片在线| 疯狂揉花蒂控制高潮h| 国产一区二区三区18| 亚洲午夜久久久久中文字幕久| 国产乱码精品一品二品| 日韩欧美一区在线| 精品剧情v国产在线观看在线| 影音先锋国产资源站| 日本一区二区三区四区五区六区| 中文字幕一区二区三区免费视频| 国产免费人做人爱午夜视频| 成人激情免费网站| 国产精品四虎| 免费黄色a级片| 在线一级成人| 美脚丝袜一区二区三区在线观看| 亚洲一区有码| 久久久久久亚洲精品杨幂换脸| 欧美一级做性受免费大片免费| 久久久久国产精品一区三寸| 福利片在线一区二区| 亚洲线精品一区二区三区| 精品视频在线观看一区| 国产精品99久久久久久久久| 亚洲精品国产成人av在线| 奇米影视7777精品一区二区| 激情婷婷丁香| 九九综合久久| 欧美午夜不卡| 91国产免费视频| 国产一区二区看久久| 久久亚洲春色中文字幕久久久| 国产麻豆成人精品| 国产精品国精产品一二| 中文字幕一区二区三区四区五区| 国产精品一在线观看| 最新av在线免费观看| 欧美高清视频一区二区| 99av国产精品欲麻豆| 日韩电影中文字幕在线观看| 高清shemale亚洲人妖| 影音先锋中文字幕在线视频| 九九这里只精品视在线99| 丁香婷婷综合五月| 中文字幕久热精品视频在线| av一区二区三区| 毛片网站在线免费观看| 亚洲国产一区视频| 久久成人一区二区| 国产乱子夫妻xx黑人xyx真爽| 韩国一区二区在线播放| 永久免费看av| 国产在线欧美| 亚洲色图图片| 人妻精品一区二区三区| 成人在线观看免费播放| 高清国产一区二区| 亚欧洲精品在线视频| 亚洲最新在线视频| 欧美综合亚洲图片综合区| 精品一二三区视频| 免费av一级电影| 色橹橹欧美在线观看视频高清| www.日本久久久久com.| 99久久久免费精品| 国产 日韩 欧美一区| 在线观看中文字幕一区| 亚洲美女毛片| 涩涩涩在线视频| 九九大香尹人视频免费| 国产一区二区三区四区三区四| 在线成人午夜影院| 亚洲精品国产精品国自产网站| 欧洲精品一区二区三区久久| 极品尤物av久久免费看| 久久国产精品久久久久| 99精品国产一区二区三区2021| 91久久国产婷婷一区二区| 婷婷成人综合网| 欧美性xxxx巨大黑人猛| 涩涩视频网站在线观看| 欧美第一页在线| 欧美日韩国产综合久久| 丰满少妇在线观看网站| 国产综合久久久久久鬼色| 日本高清视频在线观看| 麻豆电影传媒二区| 欧美美女黄视频| 久久久久国产精品一区三寸| 69影院欧美专区视频| 亚洲最大免费| 国产91av视频| 欧美韩国日本在线| 高清电影在线免费观看| 成人免费在线视频观看| 一区二区三区视频在线免费观看| 日韩mv欧美mv国产网站| 视频二区在线观看| 日韩黄色碟片| 精品嫩草影院久久| 91杏吧porn蝌蚪| 97不卡在线视频| 欧美日韩破处| 欧美成人免费在线| 午夜精品久久久久久久第一页按摩| 国产无遮挡猛进猛出免费软件| 国产一区二区区别| 国产精品高潮视频| 国产精品99久久久久久久女警|