Soft_Job 板


LINE

※ 引述《electgpro (Ray)》之铭言: : 首先,这根本不能算「策略模式」,只能算是一般的多型应用,不过我这边不是很想讨 : 论 strategy pattern 本身,有兴趣的可以去 wiki 比较一下差在哪里。 : ## 所以原本的 code 到底有什麽问题? : 基本上有两点可以讨论: : 1. 不同计算方法都被写在同一个 function 里 : 2. 如果 caller 丢了一个不认识的 shipperName,这 function 就会丢出 exception : ### 1. 不同计算方法都被写在同一个 function 里 : 原 solution 定义了一个 interface,所以要实作这个 function 必须建立一个 class : 来实作这个 interface,所以算是有解决到这个问题。但其实单纯的为不同的 shipper : 建立相对应的 function 就行了,并没有必要多一个 interface: 原原 PO 用 interface 的好处是,shipper 有新的行为时。 可以很简单的在 interface 加新的 function。 同时可以检查有 implement Shipper 的 class 要加入新的 function。 感觉上,弹性更好。 缺点嘛... 如果 shipper 很多时每个都要再补 function 是比较累一点。 : ### 2. 如果 caller 丢了一个不认识的 shipperName,这 function 就会丢出 : exception : 假设今天,我们新增了一个货运商,工程师记得要建立一个新的 class 并实作 Shipper : interface,但是他忘了把它加入 shippers hashmap,又刚好没写测试,於是 rollout : 之後就触发了 exception,就 QQ 惹。 : 有没有方法可以保证不会有例外呢?这问题就有点有趣了,但首先让我们先换一个语言 以下略... : 因为 kotlin 的 when 有提供 exhausive check 的功能。 (以下略... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 你都说了是 kotlin 功能了,这已经跟 code 的 design 无关了吧... 只能说用 kotlin 有提供更好的预先除错功能而已。 -- 人生宗旨:摔不死!那就再来吧! --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.169.245.81 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1611124959.A.D93.html ※ 编辑: steven11329 (118.169.245.81 台湾), 01/20/2021 14:44:50
1F:→ electgpro: code 跟 design 跟 language 当然有关系 01/20 14:47
2F:→ electgpro: 尤其是原原 po 後来也有拿其他语言出来 01/20 14:51
3F:→ electgpro: 拿 kotlin 出来不为过吧? 01/20 14:51
4F:→ electgpro: BTW 我没有说 interface 有什麽问题,我只有说那不是 01/20 14:53
5F:→ electgpro: 策略模式而已 01/20 14:53
6F:→ electgpro: 至於你说的「弹性」我觉得 ok,只是在这边没必要 01/20 14:54
7F:推 ura1210: 如果说因为改动interface 导至全部的implement class 都 01/29 09:11
8F:→ ura1210: 必须改动 我不认为这也叫做弹性 倒不如说是防呆吧 我认 01/29 09:11
9F:→ ura1210: 为做法应该偏向依职责需求做出拆解不同介面吧 01/29 09:11







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

请输入看板名称,例如:Boy-Girl站内搜寻

TOP