使用嵌套類來清晰化類接口雌贱,分離擴展操作和擴展查詢

《design by contract》中除了介紹了Eiffel 語言偿短,引入了前置條件,后置條件降传,不變量外勾怒。提出了基本操作声旺,基本查詢腮猖,擴展操作赞枕,擴展查詢的概念。

《effective c++》中也提到應(yīng)該把擴展查詢的成員函數(shù)替換為非成員函數(shù)谍椅。理由是為了較低的編譯依賴性古话,較好的可延伸性陪踩,以及較高的封裝性悉抵。

其實,Scott Meyers就是說把擴展查詢放到類的外部去傻谁,作為一個utility 函數(shù)或類來使用审磁。

我能理解他說的話岂座,區(qū)別基本查詢和擴展查詢的確可以純化類的接口,把把我們從大量的類方法記憶中解放出來钾恢。但我不愿意把原先對于一個類的使用變成了一個類加多個utility 方法或再加一個utility 類鸳址。至少我需要記憶的更多了,而且IDE 的智能提示功能似乎也用不上了疹瘦。

最好巡球,能得了便宜又可以賣乖琢锋。

那把utility 直接放到類里吴超,聲明成nested class鸯乃,雖然沒有較低的編譯依賴性,但的確可以知道并選擇使用擴展查詢了鸟悴。當(dāng)然细诸,這種方法肯定不是Scott Meyers 建議的陋守。

class Act
{
public:
 Act():_(*this){}
 void clearText();
 void clearIcon();

 class Util{
  public:
  Util(Act& a):owner(a){}
   void clearAll(){
     owner.clearText();
     owner.clearIcon();
   }
  private:
   Act& owner;
 } _;
};

其中clearAll 是擴展操作,調(diào)用了基本操作clearText() and clearIcon().
這樣猩系,對Act 的直接操作都是基本操作和基本查詢:act.clearText();
如果使用擴展查詢則使用: act._.clearAll();
最好的是中燥,IDE自動提示功能可以用了。呵呵拿霉。
沒有技術(shù)含量的文章咱扣,純粹自娛自樂。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末收恢,一起剝皮案震驚了整個濱河市祭往,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驮肉,老刑警劉巖已骇,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件票编,死亡現(xiàn)場離奇詭異慧域,居然都是意外死亡浪读,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門互订,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仰禽,“玉大人纺蛆,你說我怎么就攤上這事。” “怎么了粒褒?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長祥款。 經(jīng)常有香客問我月杉,道長,這世上最難降的妖魔是什么桨昙? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任腌歉,我火速辦了婚禮,結(jié)果婚禮上桂塞,老公的妹妹穿的比我還像新娘阁危。我一直安慰自己,他們只是感情好狂打,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著颈娜,像睡著了一般浙宜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上同仆,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天俗批,我揣著相機與錄音市怎,去河邊找鬼。 笑死干像,一個胖子當(dāng)著我的面吹牛驰弄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播戚篙,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼岔擂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了乱灵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤弃舒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后苗踪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年颅夺,在試婚紗的時候發(fā)現(xiàn)自己被綠了吧黄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡拗慨,死狀恐怖赵抢,靈堂內(nèi)的尸體忽然破棺而出声功,到底是詐尸還是另有隱情,我是刑警寧澤先巴,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布筹裕,位于F島的核電站窄驹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏抗斤。R本人自食惡果不足惜丈咐,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一棵逊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧徒像,春花似錦、人聲如沸灭衷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瞳遍。三九已至,卻和暖如春傅蹂,著一層夾襖步出監(jiān)牢的瞬間份蝴,已是汗流浹背氓轰。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留署鸡,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像炉抒,于是被迫代替她去往敵國和親奢讨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,521評論 25 707
  • 心是個角落 弱比拳拳 心是個房間 容量無限 若說神奇 沒有能敵它的硬盤 損壞了還能修復(fù) 迷失了還能搜索 破碎了也還...
    微雨憑欄閱讀 217評論 4 6
  • 童蒙班在本周進步頗大焰薄,主要進步如下 1拿诸、上課表現(xiàn) 上課表現(xiàn)進步最大的有熊邦智和任天浩。能夠在上課時認(rèn)真聽講而不做其...
    陳建鴻閱讀 221評論 0 0
  • 有些人沒被偷過塞茅,站在道德的制高點義正嚴(yán)辭的寬慰偷盜者亩码,三個月前,我手機電腦錢包全部被偷身無分文野瘦,夜晚站在長沙坡子街...
    矞傾閱讀 165評論 0 0
  • 今天的我描沟,心情不好,你要問我為什么,原因有很多吏廉,可能就是因為種種事情交叉在一起蠢络,所以我很難過。 有的人通過...
    吃了胖閱讀 110評論 2 1