大家对程序设计的 23 种设计模式怎么看

2016-06-06 22:25:54 +08:00
 cwlmxwb
6735 次点击
所在节点    程序员
59 条回复
wujunze
2016-06-07 10:46:38 +08:00
@stcasshern 3Q 这本书讲了 23 种设计模式麽?
icybee
2016-06-07 10:48:03 +08:00
设计模式真的和语言无关么?
cwlmxwb
2016-06-07 10:49:26 +08:00
@icybee 主要针对 oop
cwlmxwb
2016-06-07 10:50:01 +08:00
@wujunze 搜索 c++设计模式 就有了
slert
2016-06-07 10:53:55 +08:00
实际用到的机会虽然不多,但是对设计原则的掌握对写代码肯定是有帮助的。
bramblex
2016-06-07 11:27:17 +08:00
@icybee

当然跟语言有关,只有 oop 语言才适用 oop 的设计模式。

换一门 functional 的语言, oop 的设计模式就都日狗了。

不过由于主流语言绝大部分是 oop 的,所以其实总体来说,设计模式的适用范围还是挺广的。
bramblex
2016-06-07 11:30:12 +08:00
@slert

因为码农主要干的活都是拿别人现成的框架填业务逻辑。

但是如果自己设计框架就不一样了,放眼望去,全都是设计模式。
imcxy
2016-06-07 11:38:57 +08:00
说黑虎掏心你可能一下子懵逼,但是其实你会了几十年了。

设计模式本身其实不是什么知识点。最大的作用其实只是一个知识总结。就是知道了:草黑虎掏心就是这玩意啊。

一切源自于生活,生活有许多原则。卖个肥皂,直接上门一家家卖会喝西北风,找个超市老板一下子就卖出去了。这就是生活。
kenshin
2016-06-07 11:59:51 +08:00
设计模式 = 理论(所以跟语言无关),需要具体实现(所以与语言有关)。
MVC /MVP /MVVM 这些都是设计模式。所以,一般情况下,无论你是否使用,它都在那儿。
拿 前端开发 举个例子:即便什么都不用,只用了 jQuery ,那么你相当于用了很多 设计模式,如:组合模式;适配器模式;外观模式;观察者模式;代理模式 等等。

设计模式是为了解决实际问题的,不要为了设计模式而设计模式。 :)

PS :建议初学者不要接触,等以后有了语言有了自己的认识 or 项目经验后再看,会豁然开朗。尤其当你接手了一个旧项目后,利用好某些设计模式让你少走很多弯路。
acros
2016-06-07 12:02:52 +08:00
不知道 DP ,代码瞎写混乱 -> 了解 DP ,到处使用(尤其是单例···) -> 稍微知道点优缺点,谨慎使用 -> 项目更大了,多种 DP 混合使用,脑袋更不上,代码又乱了 -> 再翻四人帮书 -> 发现自己似乎更不懂 DP 了····
Mutoo
2016-06-07 12:11:57 +08:00
「哇,原来我一直在写的东西别人都取好名字了呀」
qqmishi
2016-06-07 12:36:58 +08:00
我记得在哪里看过一句,在不断的重构之中抽象总结出来的就叫模式
21grams
2016-06-07 12:48:54 +08:00
为什么是 23 种
cwlmxwb
2016-06-07 13:00:20 +08:00
@21grams 抽象出来的吧,前人归纳的这么一些
changwei
2016-06-07 13:02:51 +08:00
框架内部已经实现了模式,我只是用框架的人而已,所以也可以认为我间接的使用了 N 种设计模式。
cwlmxwb
2016-06-07 13:04:44 +08:00
@changwei 要是公司要自己写框架,那么设计模式必须了解吧
2owe
2016-06-07 13:36:14 +08:00
设计模式是前人提炼出来的一套开发思想,可以带给自己思考,这是坠吼滴!

除了 HeadFirst 系列,同事推荐郑晖的这本《冒号课堂》, https://www.amazon.cn/gp/product/B00A76JAD0/
unoyx
2016-06-07 17:55:12 +08:00
SOLID 是最重要的,《设计模式》、《 Game Programming Patterns 》这些都是为了在项目中使用 C++、 Jave 这类语言时,为了打到提高内聚、降低耦合等目标而实行的一些具体技巧。
zhgg0
2016-06-07 21:24:43 +08:00
看后发现很多方法其实都用过了,遂不看

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/283961

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX