Programming 板


LINE

※ [本文轉錄自 C_and_CPP 看板 #1FXSckDL ] 作者: Killercat (殺人貓™) 看板: C_and_CPP 標題: [分享] 人都是八卦的,所以... 時間: Thu Apr 12 02:13:00 2012 p.s. BBS程式碼標色工具掛了,所以只好用醜醜的手動標色了 XD 人都是八卦的,所以 1. 如果有人以一個謠言為基礎,換個人名就散佈謠言,用這種方法散佈多了,我們叫它 Prototype Pattern 典型的作法就是 Rumor r1 = (PoliticsRumor.clone()).setName("薄熙來"); Rumor r2 = (PoliticsRumor.clone()).setName("李登輝"); 你看,這不就簡單地創造了兩個謠言嗎 2. 如果有人用一組預設的謠言為基礎,提供客戶很多種東西讓他可以用自己的元件客制 化謠言再散佈出去,我們稱為Builder Pattern 這種做法就是 Rumor r3 = (new SpicyRumor.Builder()).setName("某男星").setTarget("某女星").setPlace("薇閣").create(); 你看,簡單易懂 3. 如果有個人在需要新聞的時候,找個八卦聚集地,要他們製造出一個 我需要的種類的謠言,我們稱為Factory。 (當然它本意不是這樣,只是看起來會是這樣 XD) SportRumor r4 = (SportRumor) SystemManager.getRumorGenerator(Rumor.Sport).createRumor(); 4. 如果有人有個固定的寫手,提供一組號碼跟不同分機,讓每個人都可以打電話進去 提供線索,打不同分機提供不同謠言,我們稱為Abstract Factory Pattern UncontainedRumor r5 = AppleDaily.createRumor(分機號碼& 分機); 老實講3跟4很像,我也常常搞混 雖然他們意思完全天差地遠 5. 如果有高層過來關切,要求我們每製造一組謠言一定要跟他們說,這種情況我們稱為 Observer pattern //也許高層會希望"監測爆料"這件事情保密,所以要用private繼承而非protect/public? class RumorFactory : protected HighLevelTelephoneNotify { Rumor createRumor(); virtual void attach(); //連接高層用 virtual void notify(SomeNotifyStructure&); //通知用 virtual void detach(); //高層失勢後斷絕聯絡用(咦?) }; 6. 如果我們有固定的好幾個線民(比方說演藝圈,政治圈等等各一個線民),用這個線 民很方便地提供很多奇怪的資訊供很多不同的雜誌製造出謠言, 這種情況遊民共享的情況我們叫他做Flyweight static RumorSource rs1 = PoliticsRumorSource.getInst(); ///通常共用的東西我們用Singleton實作 static RumorSource rs2 = ActorRumorSource.getInst(); static RumorSource rs3 = SportRumorSource.getInst(); 某日報出刊用這三個消息來源 public DailyNews DailyNewsFactory::createDailyNews() { return DailyNews::createRumor(rs1, rs2, rs3); } 某X周刊出刊一樣用這三個消息來源 阿就createRumor實作有點差異而已 public TimeNews TimeNewsFactory::createTimeNews() { return TimeNews::createRumor(rs1, rs2); } 說真的,他們這種作法,狠一點的我還可以寫個template用policy pattern表達出來 不過這離題了 XD 7. 如果我們希望能夠多聽一些謠言,提供了一組可拋棄的信箱(防止收到垃圾信)來接 收這些謠言,這稱為Delegate pattern class ISelectedNewsSource { //這個const還挺重要的,請維持這個好習慣 //前面的boolean通常可以告訴source這次的update你還要不要繼續讀下去 virtual boolean onPolicyRumorFetched(const PolicyRumor&); virtual boolean onActorRumorFetched(const ActorRumor&); ... ... } class MySourceHandler : protected ISelectedNewsSource { ... ... ... } ISelectedNewsSource* source = new MySourceHandler; dailyNews.setOnPublishCallback(source); 8 最後,當我們嫌這些謠言好煩,再也不想聽到這些加油添醋的訊息了,我們就可以把 Adapter/Bridge拔掉,用自己的判斷去評論收到的訊息 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.192.252.25



※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: Killercat (220.136.83.196), 時間: 04/12/2012 11:54:16
1F:推 sunneo::)) 220.132.1.247 05/14 04:08







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP