设计模式

35 天前
 young1
怎样才能学好设计模式,有什么好的教程推荐呢,各位大佬
3320 次点击
所在节点    程序员
33 条回复
chihiro2014
35 天前
根据业务重构代码,重构的多了,自然懂了
kissthekidlu
35 天前
先从 clean code 学起.多写,多写,换个方法写,换个方法写.
你的代码肯定有些代码可以重构到 command 设计模式,或者 factory 设计模式.
强写几次,就上手了.
mitoop
35 天前
看过很多个版本的设计模式,包括不同语言的,久久都不能彻底明白,甚至有的版本的讲解还会带来更多的困惑,直到看到了这位老哥 https://github.com/zhangyue0503/designpatterns-php 的版本似乎一下子通窍了,我主要语言是 php ,又反复琢磨了多次,先对最熟悉的下手,对 laravel 框架源码进行了多次分析用了哪些设计模式,前期每隔一段又去复习下,现在基本熟悉了。
yooomu
35 天前
这个确实需要在开发过程中实践,等你成功用设计模式重构了一段一团乱麻的代码,你就会豁然开朗
mitoop
35 天前
设计模式非常灵活,但都有固定的特征,也经常多个模式组合使用。例如 laravel 的 auth 认证,它支持多种 guard ,session ,jwt 等,从这个角度看这是策略模式,把 guard 理解为抽象的算法,可以互相替换或者新增 guard 。对于 AuthManager 它又是一个简单工厂模式,因为要根据不同的 guard type 创建对应的类,简单工厂又有开闭的问题,他又有 extend 方法来解决简单工厂的开闭问题。
BeautifulSoap
35 天前
没有写过较多项目或者参与较复杂项目的经验,学设计模式学了等于白学,因为没有相应的前置知识和经验积累,学这东西就是在死记硬背

等你有了相应项目经验了,看设计模式基本就下面两种反应

1. 要么:哦!对!我工作上项目上次就遇到相关问题,的确用这种方法来可能更好点
2. 要么:啊?!就这也配叫模式?! 这不是脑子正常点的人,代码写多了自然而然就想出来的写法吗,就这还值得专门给他分配个 xxx 模式的名字吗? (对,我说的就是我第一次看设计模式里工厂模式,singleton 模式的感想)
liuliuliuliu
35 天前
先看一遍,然后要做,要思考,多重构,多重构,多重构
oisadfo
35 天前
设计模式是答案,如果没有问题有答案也没有用
daysv
34 天前
什么设计模式, 不存在的, 所有的东西都是函数, 一个函数不够就拆两个。
主打一个万金油
qiumaoyuan
34 天前
这种东西看看就完了。
yyqxjwxy
34 天前
求个 javascript 的设计模式
Edward4074
34 天前
就是武侠小说里,你以为比的是招式(设计模式),实际上比的是内力(思维模式)
LwZiye
34 天前
看下大话设计模式,从场景上思考解决问题的思路。
joyhub2140
34 天前
这玩意真是学一次忘一次,只有代码量上来了才会用,设计模式更多是一种 OOP 设计的共识,接触时间长了,场景多了,在工程化过程中就会无意识地使用到一些设计模式,无需刻意去用。
felbryiozzzz
34 天前
newaccount
34 天前
head first: design pattern
有中文版
1252603486
34 天前
@BeautifulSoap #6 确实,写代码就是走量的同时开始思考那种方法写的简单,好,不断的写,对比就知道了,单单的去先看设计模式相关的书,完全没必要,浪费时间
lyxxxh2
34 天前
我赞同 14 楼,一种共识而已。
学设计模式,必须 2-3 年经验+。
踩过一些坑,才知道设计模式能解决什么。
至于啥优雅的,强行上还不如不上。

1. 理解目的
2. 根据自己理解,手写个出来。
3. 后面该用时,就会想到
[php 设计模式学习 ]( https://learnku.com/docs/study-php-design-patterns/1.0)
之前学的。
guanzhangzhang
34 天前
kushu001
34 天前
入坑 DDD,领域设计驱动开发,里面会用到非常多的模式
比如:
单例模式,命令模式,工厂模式,仓储模式,依赖倒置,cqrs, 观察者模式等等,非常多,
设计模式说白了就是写代码过程中的一种经验总结,平时如果只写 CRUD 可能很难接触到这块的内容,
直接自己写框架,就能体会了,因为框架就需要用到很多设计模式来处理你的框架上碰到的问题,
如果不嫌弃,可以看一下我写的,因为 DDD 本身概念的东西比较多,落地也非常困难,我也是通过我几年学习 DDD 的经验积累写的,如果有觉得写的不好的地方,也希望各位能够批评指正
gitee: https://gitee.com/neegix-opensource-group/nebula-framework
github: https://github.com/NeegixOpensourceGroup/nebula-framework
gitcode: https://gitcode.com/NeegixOpensourceGroup/nebula-framework

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

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

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

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

© 2021 V2EX