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灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP