多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php框架 > 框架設(shè)計(jì) > [置頂] 代理模式在android中使用

[置頂] 代理模式在android中使用

來(lái)源:程序員人生   發(fā)布時(shí)間:2015-06-23 08:12:11 閱讀次數(shù):3790次

代理模式(Proxy):

代理設(shè)計(jì)模式是對(duì)象的結(jié)構(gòu)模式,原理就是給某個(gè)對(duì)象提供1個(gè)代理對(duì)象,并由代理對(duì)象來(lái)控制對(duì)愿對(duì)象的援用。在有些情況下,1方不能或不想直接援用1個(gè)對(duì)象,而代理對(duì)象可以在雙方之間起到中介的作用,這樣可以大大下降彼此的耦合關(guān)系,提高彼此的靈活性。下面為代理模式的簡(jiǎn)略結(jié)構(gòu)類(lèi)圖:

 

代理模式的角色有3個(gè),分別為:抽象角色、代理角色和具體角色。具體以下:

抽象角色:聲明了代理角色和具體角色的共用接口,促使可使用具體實(shí)角色的地方都可以使用代理角色。

具體角色:定義代理角色所要代表的具體角色。

代理角色:包括對(duì)具體角色的援用,從而可以在任什么時(shí)候候操作具體角色對(duì)象;代理角色提供了與具體角色相同的接口,可以方便在任什么時(shí)候候替換具體角色對(duì)象。

 

下面我們舉個(gè)實(shí)際例子進(jìn)行說(shuō)明朝理的使用。在項(xiàng)目當(dāng)中,我們要實(shí)現(xiàn)1個(gè)搜索功能,搜索數(shù)據(jù)之前,需要先驗(yàn)證用戶(hù)是不是為登錄或會(huì)員,如果不是會(huì)員,那末提示并返回不準(zhǔn)即系查詢(xún);另外,我們還需要記錄會(huì)員的搜索記錄次數(shù),這樣可以幫助運(yùn)營(yíng)的后期推行統(tǒng)計(jì)哦!固然,這里只是摹擬實(shí)現(xiàn),驗(yàn)證失敗則提示權(quán)限不夠,記錄的次數(shù)顯示為搜索的次數(shù)(每次搜索記錄便可),而終究搜出的結(jié)果,直接顯示為搜索的關(guān)鍵字(正常不是這樣的哦)。

下面為我的搜索功能的詳細(xì)類(lèi)圖結(jié)構(gòu)關(guān)系:

 

 

好了,準(zhǔn)備的工作已好了,接下來(lái)請(qǐng)看具體的代碼實(shí)現(xiàn),具體以下:

ProSearcher:

public interfaceProSearcher {

  

   /**

    * 聲明1個(gè)抽象的方法

    */

   StringdoSearch(String userName,Stringpassword,String key);

  

}

 

ProRealSearcher:

public class ProRealSearcher implements ProSearcher {

  

   public ProRealSearcher() {

      super();

   }

 

   /**

    * 真實(shí)的查詢(xún)操作在這里進(jìn)行

    */

   @Override

   public String doSearch(StringuserName, String password, Stringkey) {

      // 參數(shù)封裝

      StringBuffersb = new StringBuffer();

      sb.append(userName);

      sb.append(password);

      sb.append(key);

      Stringrequest = sb.toString();

      // 網(wǎng)絡(luò)要求

      asyncTask(request);

     

      return key;

   }

  

   private void asyncTask(Stringparams) {

      // 網(wǎng)絡(luò)要求核心代碼

      // TODO

   }

 

}

 

ProAccessValidator:

public classProAccessValidator {

 

   /**

    * 查詢(xún)前校驗(yàn)用戶(hù)權(quán)限

    */

   public booleanvalidateUser(String userName,Stringpassword) {

      if("david001".equals(userName) &&

            "123456".equals(password)) {

         return true;

      }

     

      return false;

   }

}

 

ProSearchRecorder:

public classProSearchRecorder {

   private StringuserName;

  

   /**

    * 返回用戶(hù)搜索的次數(shù)和傳遞日志到服務(wù)端

    */

   public int save(int records) {

      // 保存本次搜索記錄并傳遞服務(wù)器

      StringrecordRemote = userName + "次數(shù):" +records;

      return save(recordRemote,records);

   }

  

   private int save(String record,intrecords) {

      records ++;

      // 傳遞記錄到服務(wù)器

      // TODO

      return records;

   }

  

   public voidsetUserName(String name) {

      userName = name;

   }

}

 

ProSearcherProxy:

public class ProSearcherProxyimplements ProSearcher {

   private ProRealSearchersearcher = null;

   private ProAccessValidatoraccessValidate = null;

   private ProSearchRecordersearchRecorder = null;

  

   public ProSearcherProxy() {

      searcher = new ProRealSearcher();

   }

  

   @Override

   public String doSearch(StringuserName, String password, Stringkey) {

      if(validateUser(userName,password)) {

         Stringresult = searcher.doSearch(userName, password, key);

         logUserRecord(userName);

         returnresult;

      }

     

      return null;

   }

  

   /**

    * 校驗(yàn)用戶(hù)權(quán)限

    */

   private booleanvalidateUser(String userName,Stringpassword) {

      accessValidate = new ProAccessValidator();

      return accessValidate.validateUser(userName, password);

   }

  

   /**

    * 查詢(xún)?nèi)罩静僮饔涗?/span>

    */

   private voidlogUserRecord(String userName) {

      searchRecorder = new ProSearchRecorder();

      searchRecorder.setUserName(userName);

   }

}

 

上面為代理模式的核心代碼,具體的前端代碼這里不羅列出來(lái)了,稍后我會(huì)將項(xiàng)目代碼傳遞上去。效果圖以下:

 

 

點(diǎn)擊我下載代碼! 


技術(shù)交換群:179914858

 

 

 

生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線(xiàn)----------------------------
分享到:
------分隔線(xiàn)----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 午夜影院免费入口 | 91欧美激情一区二区三区成人 | 伊人365影院| 五月婷婷狠狠 | 国产三级精品在线观看 | 亚洲嫩草影院在线观看 | 亚洲片在线 | 中文字幕乱码一二三四区 | 亚州精品一区二区三区 | 日韩中文字幕视频在线观看 | 最新在线网址 | 成人免费小视频 | 亚洲国产精品a一区 | 欧美人欧美人与动人物性行为 | yellow字幕网在线91zmw | 亚洲欧美日本韩国 | 92看片淫黄大片看国产片 | 大学生一级一片第一次免费 | 一区二区在线视频免费观看 | 亚洲最大的黄色网址 | 爱爱视频天天看 | 日韩精品久久久毛片一区二区 | 在线观看国产免费高清不卡 | 欧美一级做一a做片性视频 欧美一级做一级爱a做片性 | 精品久久香蕉国产线看观看亚洲 | www亚洲国产 | 中文字幕日韩专区 | 黄色h视频| 亚洲专区一区 | 亚洲欧美日本人成在线观看 | 亚洲一区二区三区四区在线 | 亚洲精品人成在线观看 | 国产免费高清mv视频在线观看 | 日产一一到六区网站免费 | h在线免费观看 | 日韩一级片免费在线观看 | 四虎东方va私人影库在线观看 | 亚洲精品456在在线播放 | 午夜www | 欧美日韩在线精品一区二区三区 | 老司机精品99在线播放 |