设计模式
怎样才能学好设计模式,有什么好的教程推荐呢,各位大佬
根据业务重构代码,重构的多了,自然懂了
先从 clean code 学起.多写,多写,换个方法写,换个方法写.
你的代码肯定有些代码可以重构到 command 设计模式,或者 factory 设计模式.
强写几次,就上手了.
看过很多个版本的设计模式,包括不同语言的,久久都不能彻底明白,甚至有的版本的讲解还会带来更多的困惑,直到看到了这位老哥 github.com/zhangyue0503/designpatterns-php 的版本似乎一下子通窍了,我主要语言是 php ,又反复琢磨了多次,先对最熟悉的下手,对 laravel 框架源码进行了多次分析用了哪些设计模式,前期每隔一段又去复习下,现在基本熟悉了。
这个确实需要在开发过程中实践,等你成功用设计模式重构了一段一团乱麻的代码,你就会豁然开朗
设计模式非常灵活,但都有固定的特征,也经常多个模式组合使用。例如 laravel 的 auth 认证,它支持多种 guard ,session ,jwt 等,从这个角度看这是策略模式,把 guard 理解为抽象的算法,可以互相替换或者新增 guard 。对于 AuthManager 它又是一个简单工厂模式,因为要根据不同的 guard type 创建对应的类,简单工厂又有开闭的问题,他又有 extend 方法来解决简单工厂的开闭问题。
没有写过较多项目或者参与较复杂项目的经验,学设计模式学了等于白学,因为没有相应的前置知识和经验积累,学这东西就是在死记硬背
等你有了相应项目经验了,看设计模式基本就下面两种反应
- 要么:哦!对!我工作上项目上次就遇到相关问题,的确用这种方法来可能更好点
要么:啊?!就这也配叫模式?! 这不是脑子正常点的人,代码写多了自然而然就想出来的写法吗,就这还值得专门给他分配个 xxx 模式的名字吗? (对,我说的就是我第一次看设计模式里工厂模式,singleton 模式的感想)
先看一遍,然后要做,要思考,多重构,多重构,多重构
设计模式是答案,如果没有问题有答案也没有用
什么设计模式, 不存在的, 所有的东西都是函数, 一个函数不够就拆两个。
主打一个万金油这种东西看看就完了。
求个 javascript 的设计模式
就是武侠小说里,你以为比的是招式(设计模式),实际上比的是内力(思维模式)
看下大话设计模式,从场景上思考解决问题的思路。
这玩意真是学一次忘一次,只有代码量上来了才会用,设计模式更多是一种 OOP 设计的共识,接触时间长了,场景多了,在工程化过程中就会无意识地使用到一些设计模式,无需刻意去用。
refactoringguru.cn/design-patterns/catalog
head first: design pattern
有中文版#6 确实,写代码就是走量的同时开始思考那种方法写的简单,好,不断的写,对比就知道了,单单的去先看设计模式相关的书,完全没必要,浪费时间
我赞同 14 楼,一种共识而已。
学设计模式,必须 2-3 年经验+。
踩过一些坑,才知道设计模式能解决什么。
至于啥优雅的,强行上还不如不上。- 理解目的
- 根据自己理解,手写个出来。
后面该用时,就会想到
php 设计模式学习
之前学的。入坑 DDD,领域设计驱动开发,里面会用到非常多的模式
比如:
单例模式,命令模式,工厂模式,仓储模式,依赖倒置,cqrs, 观察者模式等等,非常多,
设计模式说白了就是写代码过程中的一种经验总结,平时如果只写 CRUD 可能很难接触到这块的内容,
直接自己写框架,就能体会了,因为框架就需要用到很多设计模式来处理你的框架上碰到的问题,
如果不嫌弃,可以看一下我写的,因为 DDD 本身概念的东西比较多,落地也非常困难,我也是通过我几年学习 DDD 的经验积累写的,如果有觉得写的不好的地方,也希望各位能够批评指正
gitee: gitee.com/neegix-opensource-group/nebula-framework
github: github.com/NeegixOpensourceGroup/nebula-framework
gitcode: gitcode.com/NeegixOpensourceGroup/nebula-framework#6 那两种反应太真实了
remotedesktop.google.com/access?pli=1google 有個可以用 ipad 远程連 windows 的不过感觉有时候用着挺卡的,不知道有没有…
职称分高级 副高 中级 初级。 副高及以上就有很多福利了,人才引进,加分,退休补助等。 那咱们程序员评职称是个什么流程,要具备哪些条件? 考证 对所在单位有要求吗 软考…
ubuntu server golang 项目部署服务器(开发阶段 测试用的) 突然,不好使了 报错好奇怪: go.mod file indicates go 1.18…