#设计模式
看到推友关于设计模式的一句话:“设计模式的本质是为了弥补语言抽象能力不足产生的东西。比如 visitor 模式也就 OOP 在用,支持点 pattern matching / lambda 的 FP 向语言基本不用。”
我是比较同意这个说法的,写多了Rust之类的非OOP语言,确实没怎么感觉设计模式的存在,因为非OOP类语言自有自己的一套解决这类问题的方案。
不过,这并不意味着设计模式就一点都不值得学习,某种程度上我认为设计模式教会了我:在哪些地方,常用哪些招式来封装变化,每个招式都有哪些优缺点,等等。“封装变化”以使项目更好得适应变化、高内聚低耦合等等,就与具体的语言无关了,是软件设计都必须面对的问题。而至于当时初学时为了设计模式而用设计模式导致的过度封装,又是另外一回事了。
https://twitter.com/the_foreverbell/status/1553780395778654208
看到推友关于设计模式的一句话:“设计模式的本质是为了弥补语言抽象能力不足产生的东西。比如 visitor 模式也就 OOP 在用,支持点 pattern matching / lambda 的 FP 向语言基本不用。”
我是比较同意这个说法的,写多了Rust之类的非OOP语言,确实没怎么感觉设计模式的存在,因为非OOP类语言自有自己的一套解决这类问题的方案。
不过,这并不意味着设计模式就一点都不值得学习,某种程度上我认为设计模式教会了我:在哪些地方,常用哪些招式来封装变化,每个招式都有哪些优缺点,等等。“封装变化”以使项目更好得适应变化、高内聚低耦合等等,就与具体的语言无关了,是软件设计都必须面对的问题。而至于当时初学时为了设计模式而用设计模式导致的过度封装,又是另外一回事了。
https://twitter.com/the_foreverbell/status/1553780395778654208
Twitter
@Smellyprince 设计模式的本质是为了弥补语言抽象能力不足产生的东西。比如 visitor 模式也就 OOP 在用,支持点 pattern matching / lambda 的 FP 向语言基本不用。
没必要太多地去纠结这些东西,看不懂代码就去问写这个代码的人。
没必要太多地去纠结这些东西,看不懂代码就去问写这个代码的人。
👍17