设计模式

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

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

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

1. 理解目的
2. 根据自己理解,手写个出来。
3. 后面该用时,就会想到
[php 设计模式学习 ]( https://learnku.com/docs/study-php-design-patterns/1.0)
之前学的。
guanzhangzhang
2 天前
kushu001
1 天前
入坑 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