亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Gmail使用與代理模式

系統(tǒng) 1523 0

通過使用Gmail,進(jìn)一步理解軟件設(shè)計(jì)模式中的代理模式(Proxy pattern).

?

Gmail郵箱的使用需求:

一直使用的郵箱A,所有的郵件進(jìn)出的直接使用郵箱;

大量的團(tuán)隊(duì)郵箱C1,C2,C3,...,Cn;

以前被廢棄的郵箱D1,D2,D3,...,Dm。
為了使用的方便,我們希望所有的團(tuán)隊(duì)郵箱中的郵件能夠自動(dòng)轉(zhuǎn)發(fā)到A,被廢棄的郵箱能夠自動(dòng)轉(zhuǎn)發(fā)郵件到A。一般情況下,我們可以簡單的通過讓C系、D系郵箱自動(dòng)轉(zhuǎn)發(fā)到A,不支持轉(zhuǎn)發(fā)的可以通過Gmail自帶的郵件提取功能去主動(dòng)提取郵件。


我們似乎看到了解決的方法,但是對(duì)于有“潔癖”的朋友可能發(fā)現(xiàn)這樣的問題:

郵件e同時(shí)發(fā)送到A,C1,D1,則出現(xiàn)了A中出現(xiàn)了三封一樣的郵件e,這樣不論是視覺上還是空間上面都是一種浪費(fèi)。能否將其過濾掉呢?在這個(gè)時(shí)候大家可能容易想到那些強(qiáng)大的郵件過濾器機(jī)制。但是經(jīng)過嘗試,你會(huì)發(fā)現(xiàn)隨著n、m值的增多,我們可能需要在A中設(shè)置大量的復(fù)雜的過濾機(jī)制,這樣我們就增加了日常郵件系統(tǒng)的維護(hù)。這讓我們很容易想到請(qǐng)別的人幫我們做過濾,在公司中你可能會(huì)有機(jī)會(huì)被配一個(gè)秘書來做此事,但是更多的人可能就得自我來“人肉法”了。那么我們能否請(qǐng)一個(gè)自動(dòng)秘書呢?通過這個(gè)思路,我們?cè)谥苯咏oA轉(zhuǎn)發(fā)各種郵件時(shí),先通過一個(gè)秘書,讓秘書做統(tǒng)一的過濾后做再次轉(zhuǎn)發(fā)至A.


以上就是通過一個(gè)統(tǒng)一的過濾秘書B,來達(dá)到簡潔處理的效果。以后再有C系、D系郵箱的增加,我們就直接讓他們轉(zhuǎn)發(fā)到秘書B那里就好了。

如此以來,我們簡化了A的過濾規(guī)則,提高了以后擴(kuò)展郵箱時(shí)的速度。 在這里我只是拋磚引玉,其實(shí)B中的過濾轉(zhuǎn)發(fā)條件是豐富多樣了,大家可以根據(jù)自己的具體需要來定制。

現(xiàn)在我們將解決方案引申,可以得到一種稱為“代理”的廣義社會(huì)生活的解決方案。

?

什么是代理?

維基百科 寫道
代理 (Agency),在法律學(xué)中系指代理人于代理權(quán)限內(nèi),以本人名義向第三人代為或代受意思表示,而對(duì)本人直接發(fā)生效力的行為。而代理依其發(fā)生的原因又可以分為法定代理與意定代理。
代理基本上為財(cái)產(chǎn)法上概念,具一身專屬性質(zhì)的身分行為原則上不許代理;另外,侵權(quán)行為也不能代理。
?
雅虎知識(shí)堂 寫道
代理是指一方(代理人)以他方(被代理人)的名義,在授權(quán)范圍內(nèi)與第三人從事的貿(mào)易活動(dòng),而其權(quán)利和義務(wù)的后果又直接歸屬于他方的行為。依產(chǎn)生的根據(jù)不同,可分為委托代理、法定代理和指定代理。
1.委托代理,是基于被代理人的委托而發(fā)生的代理關(guān)系;
2.法定代理,是根據(jù)法律的直接規(guī)定而發(fā)生的代理關(guān)系;
3.指定代理,是根據(jù)人民法院和有關(guān)單位的指定而發(fā)生的代理關(guān)系。

  代理人在代理權(quán)限內(nèi),以被代理人的名義進(jìn)行民事活動(dòng),其法律后果直接由被代理人承受的法律制度。代理是三方人之間的民事法律關(guān)系,即代理人與被代理人之間的關(guān)系,代理人與第三人之間的關(guān)系,第三人與被代理人之間的關(guān)系。

  代理的適用范圍包括:
  1.代理實(shí)施法律行為,如代理進(jìn)行買賣、租賃、簽訂合同和履行債務(wù)等;
  2.代理進(jìn)行民事訴訟;
  3.代理履行某些財(cái)政、行政義務(wù),如代理進(jìn)行房屋登記、法人登記、商標(biāo)注冊(cè)。納稅等。但某些具有人身性質(zhì)的民事行為如婚姻登記、收養(yǎng)子女、立遺囑等,以及某些具有人身性質(zhì)的債務(wù)如約稿合同、演出合同等,依法須由本人親自履行的,不能代理。此外,侵權(quán)行為和內(nèi)容違法的行為,也不能進(jìn)行代理。

?在我理解,代理就是代替我們處理一些事務(wù)。

?

現(xiàn)在我們來看看設(shè)計(jì)模式中的經(jīng)典設(shè)計(jì)模式之一“代理模式”。

我第一次看到代理模式,是在《Head First 設(shè)計(jì)模式》中看到的,里面的引入例子就是我們?cè)贘ava中通常使用的RMI.其實(shí)我感覺這個(gè)例子不夠生動(dòng),至少我使用這個(gè)東西的機(jī)會(huì)很少;后來我又在使用Spring時(shí)看到了大量使用代理模式的樣例和具體使用場(chǎng)景,這里面的例子則及其生動(dòng)的展現(xiàn)了一個(gè)代理的所作所為(從XML綁定,到后面的使用都體現(xiàn)了這個(gè)優(yōu)秀的設(shè)計(jì)模式的優(yōu)越性)。

深入淺出基于Java的代理設(shè)計(jì)模式 寫道
http://tech.sina.com.cn/s/s/2005-03-09/0930545280.shtml


......................................................
二、定義和分類
  代理模式在設(shè)計(jì)模式中的定義就是:為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問。說白了就是,在一些情況下客戶不想或者不能直接引用一個(gè)對(duì)象,而代理對(duì)象可以在客戶和目標(biāo)對(duì)象之間起到中介作用,去掉客戶不能看到的內(nèi)容和服務(wù)或者增添客戶需要的額外服務(wù)。
  那么什么時(shí)候要使用代理模式呢?在對(duì)已有的方法進(jìn)行使用的時(shí)候出現(xiàn)需要對(duì)原有方法進(jìn)行改進(jìn)或者修改,這時(shí)候有兩種改進(jìn)選擇:修改原有方法來適應(yīng)現(xiàn)在的使用方式,或者使用一個(gè)“第三者”方法來調(diào)用原有的方法并且對(duì)方法產(chǎn)生的結(jié)果進(jìn)行一定的控制。第一種方法是明顯違背了“對(duì)擴(kuò)展開放、對(duì)修改關(guān)閉”(開閉原則),而且在原來方法中作修改可能使得原來類的功能變得模糊和多元化(就像現(xiàn)在企業(yè)多元化一樣),而使用第二種方式可以將功能劃分的更加清晰,有助于后面的維護(hù)。所以在一定程度上第二種方式是一個(gè)比較好的選擇!
  當(dāng)然,話又說回來了,如果是一個(gè)很小的系統(tǒng),功能也不是很繁雜,那么使用代理模式可能就顯得臃腫,不如第一種方式來的快捷。這就像一個(gè)三口之家,家務(wù)活全由家庭主婦或者一個(gè)保姆來完成是比較合理的,根本不需要雇上好幾個(gè)保姆層層代理:)
  根據(jù)《Java與模式》書中對(duì)代理模式的分類,代理模式分為8種,這里將幾種常見的、重要的列舉如下:
  1. 遠(yuǎn)程(Remote)代理:為一個(gè)位于不同的地址空間的對(duì)象提供一個(gè)局域代表對(duì)象。比如:你可以將一個(gè)在世界某個(gè)角落一臺(tái)機(jī)器通過代理假象成你局域網(wǎng)中的一部分。
  2. 虛擬(Virtual)代理:根據(jù)需要將一個(gè)資源消耗很大或者比較復(fù)雜的對(duì)象延遲的真正需要時(shí)才創(chuàng)建。比如:如果一個(gè)很大的圖片,需要花費(fèi)很長時(shí)間才能顯示出來,那么當(dāng)這個(gè)圖片包含在文檔中時(shí),使用編輯器或?yàn)g覽器打開這個(gè)文檔,這個(gè)大圖片可能就影響了文檔的閱讀,這時(shí)需要做個(gè)圖片Proxy來代替真正的圖片。
  3. 保護(hù)(Protect or Access)代理:控制對(duì)一個(gè)對(duì)象的訪問權(quán)限。比如:在論壇中,不同的身份登陸,擁有的權(quán)限是不同的,使用代理模式可以控制權(quán)限(當(dāng)然,使用別的方式也可以實(shí)現(xiàn))。
  4. 智能引用(Smart Reference)代理:提供比對(duì)目標(biāo)對(duì)象額外的服務(wù)。比如:紀(jì)錄訪問的流量(這是個(gè)再簡單不過的例子),提供一些友情提示等等。
  代理模式是一種比較有用的模式,從幾個(gè)類的“小結(jié)構(gòu)”到龐大系統(tǒng)的“大結(jié)構(gòu)”都可以看到它的影子。

  三、結(jié)構(gòu)
  代理模式中的“代理商”要想實(shí)現(xiàn)代理任務(wù),就必須和被代理的“廠商”使用共同的接口(你可以想象為產(chǎn)品)。所以自然而然你會(huì)想到在java中使用一個(gè)抽象類或者接口(推薦)來實(shí)現(xiàn)這個(gè)共同的接口。于是代理模式就有三個(gè)角色組成了:
  1.抽象主題角色:聲明了真實(shí)主題和代理主題的共同接口。
  2.代理主題角色:內(nèi)部包含對(duì)真實(shí)主題的引用,并且提供和真實(shí)主題角色相同的接口。
  3.真實(shí)主題角色:定義真實(shí)的對(duì)象。
  使用類圖來表示下三者間的關(guān)系如下:

?
  當(dāng)然,圖上所示的是代理模式中的一個(gè)具體情況。而代理模式可以非常靈活的使用其他方式來實(shí)現(xiàn),這樣就與圖上所示有很大的區(qū)別。
  也許,現(xiàn)在你已經(jīng)對(duì)代理模式已經(jīng)有了一個(gè)宏觀的認(rèn)識(shí)了,下面我們來看看怎么實(shí)際的使用代理模

.........................

?網(wǎng)上有很多討論這個(gè)設(shè)計(jì)模式的文章,我的開發(fā)經(jīng)驗(yàn)有限在這里就不獻(xiàn)丑了。

?

總結(jié):

  • 設(shè)計(jì)模式不僅僅可以使用在軟件設(shè)計(jì)中,更可以發(fā)揮我們的想像將它們使用到一切適用的地方。本身這一個(gè)個(gè)模式都來源于生活嘛。
  • 充分利用網(wǎng)上的各個(gè)工具,力爭使我們的工作生活?yuàn)蕵贰暗婉詈稀薄ⅰ案邇?nèi)聚”、“易擴(kuò)展”。

Gmail使用與代理模式


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国产精品久久在线观看 | 免费一级淫片 | 天天躁日日躁狠狠躁黑人躁 | 亚洲综合在线观看视频 | 99尹人香蕉国产免费天天拍 | 久久大香香蕉国产免费网vrr | 亚洲一区二区三区成人 | 亚洲一区二区三区网站 | 国产视频一区二 | 一级毛片特黄久久免费看 | 成人国产第一区在线观看 | 欧美亚洲日本国产综合网 | 亚洲欧美日韩中文在线 | 亚洲免费在线观看 | 久久天天躁夜夜躁狠狠躁2020 | 超碰在线小说 | 亚洲精品三区 | 男人天堂a在线 | 婷婷四房综合激情五月在线 | 黄色高清网站 | 91亚洲精品一区二区在线观看 | 亚洲精品九色在线网站 | 青青草99热这里都是精品 | 在线观看日韩欧美 | 国产成人亚洲精品久久 | 国产综合精品久久亚洲 | 四虎影片 | 亚洲韩国欧美 | 亚洲三级在线免费观看 | 九九热视频在线免费观看 | 色婷婷六月 | 久久精品国产精品亚洲婷婷 | 日韩一区二区不卡中文字幕 | 97久久久久 | 久久不见久久见免费影院 | 国产在线欧美日韩一区二区 | 亚洲一区二区视频在线观看 | 亚洲欧美综合国产不卡 | 四虎澳门永久8848在线影院 | 97在线观看播放 | 国产成人短视频 |