青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

 看到有些朋友很喜歡用軟命令的方式來(lái)提供接口, 什么是軟命令, 其實(shí)就是一個(gè)接口,根據(jù)參數(shù)的不同,可以實(shí)現(xiàn)N多的功能(我不知道"軟命令"這名詞是我原創(chuàng)還是現(xiàn)有的,我們暫時(shí)就這樣稱呼吧).

看看現(xiàn)實(shí)中有哪些產(chǎn)品已經(jīng)成功應(yīng)用了這種特性?

首先想到是的是windows窗口的消息處理函數(shù),用C的方式是類似這樣:
LRESULT MessageProc(HWND hWnd, UINT nMsgType, WPARAM wParam, LPARAM lParam);

用C++實(shí)現(xiàn)是類似這樣
class CWindow
{
public:
LRESULT MessageHander(UINT nMsgType, WPARAM wParam, LPARAM lParam);
};
當(dāng)然里面實(shí)現(xiàn)時(shí)會(huì)有一堆switch case.

接下來(lái)會(huì)想到COM里IDispatch接口的Invoke函數(shù),外部無(wú)論調(diào)用對(duì)象的什么方法或?qū)傩裕纪ㄟ^(guò)這個(gè)自動(dòng)化接口。

再往廣義上想,DOS里的命令行,Windbg的操作命令等,其實(shí)都是"軟命令"。

再?gòu)V一點(diǎn), 整個(gè)Web服務(wù)器就是一個(gè)"軟命令"入口,比如URL API,都是通過(guò)一個(gè)單獨(dú)的Http請(qǐng)求入口,可以實(shí)現(xiàn)各種各樣的任務(wù)。

我們對(duì)上面的例子進(jìn)行抽象,就會(huì)發(fā)現(xiàn)他們的共性是對(duì)外接口固定,但是內(nèi)部功能確是可以擴(kuò)充,很符合開(kāi)放封閉這條設(shè)計(jì)原則。往設(shè)計(jì)模式上考慮, 其實(shí)就是單一入口的Facade模式。

這么方便的接口,那么是不是在我們平時(shí)的設(shè)計(jì)中應(yīng)該盡量使用呢? 我看未必。 如果按照這種設(shè)計(jì),任何類都只要一個(gè)MethodCallRequest方法就好了,根據(jù)這個(gè)入口,我會(huì)根據(jù)你的命令類型,調(diào)用相應(yīng)的方法。如果你真的所有的類都這樣做了,等類層次一復(fù)雜,我看你的代碼就不用維護(hù)了。當(dāng)然也有語(yǔ)言確實(shí)是這么做的,比如Objective-c, 它內(nèi)部對(duì)象的每個(gè)函數(shù)調(diào)用,都是通過(guò)查找對(duì)象的function table, 然后再調(diào)用對(duì)應(yīng)的function,但它的前提是語(yǔ)言本身提供這個(gè)特性。但是像C++這種靜態(tài)強(qiáng)類型的語(yǔ)言,讓對(duì)象的每個(gè)方法有明確的用途,讓編譯器幫你檢測(cè)對(duì)象是不是有相應(yīng)的方法,一來(lái)清晰,而來(lái)高效,何樂(lè)而不為?

那么究竟什么時(shí)候適用這種接口方式呢?

我的看法是只有當(dāng)你的模塊是一個(gè)單獨(dú)的子系統(tǒng),當(dāng)對(duì)外提供功能時(shí),才可以這么做。這里的子系統(tǒng)不一定要是一個(gè)很大的概念,比如一個(gè)窗口,一個(gè)COM對(duì)象都可以稱為簡(jiǎn)單的子系統(tǒng),但是它的前提要求是獨(dú)立,對(duì)外,并且最好你可以預(yù)見(jiàn)到以后它的功能會(huì)改變和擴(kuò)充。

那么有沒(méi)有不用這種"軟命令"的接口方式,但是我也可以不斷擴(kuò)充對(duì)象提供的方法呢? 有的,設(shè)計(jì)模式里的Visitor模式就是為此而準(zhǔn)備的,這里就不多說(shuō)了。
posted on 2012-06-13 10:08 Richard Wei 閱讀(3402) 評(píng)論(5)  編輯 收藏 引用 所屬分類: 設(shè)計(jì)模式

FeedBack:
# re: 軟命令接口的適用場(chǎng)合
2012-06-13 11:21 | 華夏之火
在這種軟命令下,只能給對(duì)象發(fā)送消息,對(duì)象可以采取種種方式響應(yīng)消息,甚至可在對(duì)象外面響應(yīng)消息,在外面截取消息,不讓消息流進(jìn)到之前的消息處理中。這樣,就不會(huì)存在什么復(fù)雜類層次結(jié)構(gòu)。這種方式,在下認(rèn)為并不是“單一入口的Faced模式”,而是幾乎包含了所有接口的變種橋接模式  回復(fù)  更多評(píng)論
  
# re: 軟命令接口的適用場(chǎng)合
2012-06-13 13:29 | Richard Wei
@華夏之火
這個(gè)怎么說(shuō)呢,F(xiàn)aced模式強(qiáng)調(diào)的是一個(gè)復(fù)雜系統(tǒng)對(duì)外有一個(gè)統(tǒng)一的入口; Bridge模式強(qiáng)調(diào)的是分層的概念,將抽象層和實(shí)現(xiàn)層分離,二層可以分別獨(dú)立的變化。感覺(jué)上面的"軟命令"方式,從對(duì)外暴露的接口的簡(jiǎn)單統(tǒng)一性來(lái)說(shuō)比較符合Faced模式;但是從內(nèi)部實(shí)現(xiàn)來(lái)說(shuō),你要理解成同一消息可以有多種處理方式,Bridge模式也可以。
  回復(fù)  更多評(píng)論
  
# re: 軟命令接口的適用場(chǎng)合[未登錄](méi)
2012-06-13 21:04 | jacky
Faced模式是什么模式,沒(méi)聽(tīng)說(shuō)過(guò)啊,應(yīng)該是facade吧  回復(fù)  更多評(píng)論
  
# re: 軟命令接口的適用場(chǎng)合
2012-06-13 21:08 | Richard Wei
@jacky
確實(shí)應(yīng)該是facade, 只留意大概讀音,沒(méi)想到拼寫錯(cuò)誤。
多謝指正。  回復(fù)  更多評(píng)論
  
# re: 軟命令接口的適用場(chǎng)合
2012-06-22 01:34 | tb
多些指教了   回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜久久久久久| 欧美一区二区黄| 亚洲国产免费看| 国产日韩欧美自拍| 亚洲一区亚洲| 欧美综合国产精品久久丁香| 国产视频久久久久久久| 亚洲欧美久久久久一区二区三区| 久久精品麻豆| 激情成人中文字幕| 亚洲激情在线视频| 亚洲激情另类| 久久九九99| 亚洲四色影视在线观看| 亚洲欧洲精品一区二区三区| 亚洲无吗在线| 羞羞色国产精品| 亚洲激情国产精品| 亚洲电影中文字幕| 午夜国产欧美理论在线播放 | 99在线精品视频| 欧美激情影音先锋| 亚洲午夜精品网| 久热精品视频| 一本色道久久精品| 国产亚洲精品bt天堂精选| 久久国产欧美| 亚洲日本中文字幕免费在线不卡| 欧美有码视频| 99国产精品久久久久久久久久 | 亚洲欧美日本精品| 一区一区视频| 国产精品乱人伦中文| 开元免费观看欧美电视剧网站| 日韩亚洲欧美中文三级| 欧美大片一区| 久久久99免费视频| 一本色道精品久久一区二区三区| 黄色一区二区三区| 欧美视频一区二区三区在线观看| 久久精品av麻豆的观看方式| 一区二区久久| 亚洲国产精品毛片| 欧美va天堂在线| 久久久7777| 亚洲一区二区三区高清 | 亚洲九九精品| 欧美亚洲视频在线观看| 亚洲精品中文字幕在线| 国内自拍一区| 国产欧美一区二区色老头| 欧美精品免费在线观看| 老鸭窝91久久精品色噜噜导演| 午夜精品亚洲一区二区三区嫩草| 亚洲激情欧美| 欧美二区视频| 免费毛片一区二区三区久久久| 午夜日韩激情| 亚洲欧美日韩一区二区在线 | 有坂深雪在线一区| 国产午夜精品视频免费不卡69堂| 欧美午夜一区二区| 欧美三区在线观看| 欧美日韩中文| 欧美视频在线一区二区三区| 欧美区一区二| 欧美精品一区二区久久婷婷| 免费在线观看成人av| 免费不卡中文字幕视频| 久久综合久久综合久久| 久久久久一区二区| 久久免费99精品久久久久久| 久久激情网站| 久久久久天天天天| 欧美成人午夜激情在线| 欧美精品 国产精品| 欧美日韩国产色综合一二三四| 欧美日本在线一区| 欧美调教vk| 国产亚洲一区精品| 亚洲春色另类小说| 亚洲精品一区在线观看| 亚洲一区二区在线看| 欧美一级成年大片在线观看| 欧美中在线观看| 免费观看成人www动漫视频| 亚洲第一中文字幕在线观看| 亚洲裸体在线观看| 亚洲综合久久久久| 久久午夜视频| 欧美日韩国产欧美日美国产精品| 国产精品黄色| 亚洲福利免费| 亚洲一区二区视频| 久久免费偷拍视频| 国产亚洲欧洲一区高清在线观看| 欧美一区二区三区免费观看视频| 午夜精品一区二区三区在线| 久久综合色8888| 亚洲视频精品在线| 欧美午夜精品久久久久免费视 | 麻豆九一精品爱看视频在线观看免费| 久久久精品动漫| 亚洲精品女av网站| 一区二区电影免费在线观看| 欧美一级日韩一级| 国产欧美va欧美va香蕉在| 小辣椒精品导航| 欧美日韩一区自拍| 美女国内精品自产拍在线播放| 欧美成ee人免费视频| 久久久久久久久久看片| 蜜桃av久久久亚洲精品| 国产精品久线观看视频| 在线日韩成人| 欧美一区1区三区3区公司| 欧美成人高清视频| 亚洲一区在线播放| 欧美精品久久久久久| 午夜欧美大尺度福利影院在线看| 久久精品视频在线看| 欧美高清不卡| 国产精品一级二级三级| 亚洲国产成人午夜在线一区| 亚洲特级片在线| 久久精品国产亚洲a| 久久成人羞羞网站| 欧美激情综合五月色丁香| 国产欧美精品一区| 亚洲小少妇裸体bbw| 亚洲三级性片| 欧美一区2区视频在线观看| 欧美一区二区三区四区在线观看| 亚洲欧美日韩电影| 欧美日韩综合在线| 欧美精品一区二区三区视频| 国产美女高潮久久白浆| 在线亚洲国产精品网站| 欧美精品成人| 亚洲伦理网站| 欧美激情在线| 欧美aⅴ99久久黑人专区| 在线一区二区三区四区| 欧美日韩国产影片| 久久久久久久91| 国产精品女主播一区二区三区| 一二三四社区欧美黄| 久久在线视频在线| 国产精品一区二区在线观看| 欧美伊久线香蕉线新在线| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲欧美日韩国产综合在线| 久久久xxx| 亚洲国产精品女人久久久| 午夜精品视频在线观看一区二区| 亚洲九九爱视频| 欧美猛交免费看| 99视频有精品| 亚洲美女毛片| 欧美午夜在线观看| 午夜欧美大尺度福利影院在线看| 欧美一区中文字幕| 久久久精品999| 国产精品日韩欧美一区二区三区| 亚洲少妇最新在线视频| 一区二区三区四区精品| 久久综合九色综合久99| 久久国产精品久久久久久久久久| 久久精品中文字幕免费mv| 国产精品久久久久一区二区三区共| 久久男女视频| 亚洲第一精品久久忘忧草社区| 欧美1区2区| 欧美日韩喷水| 久久激情视频久久| 久久久综合视频| 91久久综合亚洲鲁鲁五月天| 亚洲黄色性网站| 国产精品久久久久9999吃药| 女同性一区二区三区人了人一 | 亚洲欧美国内爽妇网| 欧美色一级片| 久久综合一区二区三区| 国产综合欧美在线看| 国产精品老女人精品视频| 美女露胸一区二区三区| 久久亚洲国产精品一区二区| 在线亚洲精品| 久久精品国产99国产精品澳门| 亚洲免费观看| 久久av在线| 亚洲欧美bt| 亚洲欧美精品在线| 激情综合视频| 欧美精品日韩综合在线| 亚洲综合精品一区二区| 在线观看福利一区| 欧美高清你懂得| 亚洲男人av电影| 一区二区三区久久网|