前端控制器模式

前言:

因?yàn)楝F(xiàn)在設(shè)計(jì)模式在網(wǎng)絡(luò)上已經(jīng)泛濫,但是還是有好多程序員不能夠靈活的運(yùn)用設(shè)計(jì)模式,這個(gè)是對(duì)設(shè)計(jì)模式簡(jiǎn)單的介紹,因?yàn)榫W(wǎng)絡(luò)上比較多類(lèi)似的文章,所以本人就從網(wǎng)絡(luò)上抄了一部分,等23種設(shè)計(jì)模式整理完成之后會(huì)根據(jù)實(shí)際的需求利用設(shè)計(jì)模式在代碼中設(shè)計(jì)一些開(kāi)源的插件,請(qǐng)繼續(xù)關(guān)注宛裕。
原版[菜鳥(niǎo)教程]

簡(jiǎn)介:

前端控制器模式(Front Controller Pattern)是用來(lái)提供一個(gè)集中的請(qǐng)求處理機(jī)制琅坡,所有的請(qǐng)求都將由一個(gè)單一的處理程序處理。該處理程序可以做認(rèn)證/授權(quán)/記錄日志租漂,或者跟蹤請(qǐng)求,然后把請(qǐng)求傳給相應(yīng)的處理程序渐北。以下是這種設(shè)計(jì)模式的實(shí)體筛璧。

  • 前端控制器(Front Controller) - 處理應(yīng)用程序所有類(lèi)型請(qǐng)求的單個(gè)處理程序,應(yīng)用程序可以是基于 web 的應(yīng)用程序骡男,也可以是基于桌面的應(yīng)用程序淆游。
  • 調(diào)度器(Dispatcher) - 前端控制器可能使用一個(gè)調(diào)度器對(duì)象來(lái)調(diào)度請(qǐng)求到相應(yīng)的具體處理程序。
  • 視圖(View) - 視圖是為請(qǐng)求而創(chuàng)建的對(duì)象隔盛。
案例:

第一步: 創(chuàng)建視圖:

public class HomeView {
   public void show(){
      System.out.println("Displaying Home Page");
   }
}

public class StudentView {
   public void show(){
      System.out.println("Displaying Student Page");
   }
}

第二步: 創(chuàng)建調(diào)度器:

public class Dispatcher {
   private StudentView studentView;
   private HomeView homeView;
   public Dispatcher(){
      studentView = new StudentView();
      homeView = new HomeView();
   }
 
   public void dispatch(String request){
      if(request.equalsIgnoreCase("STUDENT")){
         studentView.show();
      }else{
         homeView.show();
      }  
   }
}

第三步: 創(chuàng)建前端控制器:

public class FrontController {
   
   private Dispatcher dispatcher;
 
   public FrontController(){
      dispatcher = new Dispatcher();
   }
 
   private boolean isAuthenticUser(){
      System.out.println("User is authenticated successfully.");
      return true;
   }
 
   private void trackRequest(String request){
      System.out.println("Page requested: " + request);
   }
 
   public void dispatchRequest(String request){
      //記錄每一個(gè)請(qǐng)求
      trackRequest(request);
      //對(duì)用戶進(jìn)行身份驗(yàn)證
      if(isAuthenticUser()){
         dispatcher.dispatch(request);
      }  
   }
}

第四步: 使用 FrontController 來(lái)演示前端控制器設(shè)計(jì)模式:

public class FrontControllerPatternDemo {
   public static void main(String[] args) {
      FrontController frontController = new FrontController();
      frontController.dispatchRequest("HOME");
      frontController.dispatchRequest("STUDENT");
   }
}

第五步: 輸出:

Page requested: HOME
User is authenticated successfully.
Displaying Home Page
Page requested: STUDENT
User is authenticated successfully.
Displaying Student Page

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末犹菱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吮炕,更是在濱河造成了極大的恐慌腊脱,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件龙亲,死亡現(xiàn)場(chǎng)離奇詭異陕凹,居然都是意外死亡悍抑,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)杜耙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)搜骡,“玉大人,你說(shuō)我怎么就攤上這事佑女〖敲遥” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵团驱,是天一觀的道長(zhǎng)摸吠。 經(jīng)常有香客問(wèn)我,道長(zhǎng)店茶,這世上最難降的妖魔是什么蜕便? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮贩幻,結(jié)果婚禮上轿腺,老公的妹妹穿的比我還像新娘。我一直安慰自己丛楚,他們只是感情好族壳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著趣些,像睡著了一般仿荆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坏平,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天拢操,我揣著相機(jī)與錄音,去河邊找鬼舶替。 笑死令境,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的顾瞪。 我是一名探鬼主播舔庶,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼陈醒!你這毒婦竟也來(lái)了惕橙?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤钉跷,失蹤者是張志新(化名)和其女友劉穎弥鹦,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體爷辙,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惶凝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年吼虎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苍鲜。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖玷犹,靈堂內(nèi)的尸體忽然破棺而出混滔,到底是詐尸還是另有隱情,我是刑警寧澤歹颓,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布坯屿,位于F島的核電站,受9級(jí)特大地震影響巍扛,放射性物質(zhì)發(fā)生泄漏领跛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一撤奸、第九天 我趴在偏房一處隱蔽的房頂上張望吠昭。 院中可真熱鬧,春花似錦胧瓜、人聲如沸矢棚。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蒲肋。三九已至,卻和暖如春钝满,著一層夾襖步出監(jiān)牢的瞬間兜粘,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工弯蚜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留孔轴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓熟吏,卻偏偏與公主長(zhǎng)得像距糖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子牵寺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 刪:DELETE FROM 表名 WHERE 列名 = 值 DELETE FROM 表名 “or” DELETE...
    皮修豬閱讀 174評(píng)論 0 0
  • 廚房里悍引,燈光下, 兩只飛蛾相互擁抱帽氓, 享受二人世界的美好趣斤。 感受愛(ài)情的神奇美妙! 我把墻壁衛(wèi)生打掃黎休, 卻無(wú)意將它們...
    myth神話閱讀 207評(píng)論 0 2
  • 浮生若夢(mèng)漫仆,為歡幾何……身處現(xiàn)實(shí)之境,讀讀《浮生六記》泪幌,就會(huì)有一種穿越的感覺(jué)盲厌,因?yàn)樽髡吒「〕脸恋囊簧M管經(jīng)歷很...
    輕舞飛揚(yáng)_明月清風(fēng)閱讀 789評(píng)論 0 3
  • 讀到《贏》讓我看到管理的奇妙和樂(lè)趣祸泪。也正是我現(xiàn)在缺的吗浩。對(duì)立面的好多東西都特別感興趣。比如價(jià)值觀没隘,坦誠(chéng)懂扼,20:70:...
    TA79魏明閱讀 216評(píng)論 0 0
  • 是青春的道別 還是歲月的無(wú)奈 飄零 徘徊 不舍而別的故事 誰(shuí)來(lái)理解 落紅染色的路面 斑駁被花片掩蓋 踏香而行 算是...
    楓之然閱讀 730評(píng)論 11 22