怎样才能学好设计模式,有什么好的教程推荐呢,各位大佬

根据业务重构代码,重构的多了,自然懂了

先从 clean code 学起.多写,多写,换个方法写,换个方法写.
你的代码肯定有些代码可以重构到 command 设计模式,或者 factory 设计模式.
强写几次,就上手了.

看过很多个版本的设计模式,包括不同语言的,久久都不能彻底明白,甚至有的版本的讲解还会带来更多的困惑,直到看到了这位老哥 github.com/zhangyue0503/designpatterns-php 的版本似乎一下子通窍了,我主要语言是 php ,又反复琢磨了多次,先对最熟悉的下手,对 laravel 框架源码进行了多次分析用了哪些设计模式,前期每隔一段又去复习下,现在基本熟悉了。

这个确实需要在开发过程中实践,等你成功用设计模式重构了一段一团乱麻的代码,你就会豁然开朗

设计模式非常灵活,但都有固定的特征,也经常多个模式组合使用。例如 laravel 的 auth 认证,它支持多种 guard ,session ,jwt 等,从这个角度看这是策略模式,把 guard 理解为抽象的算法,可以互相替换或者新增 guard 。对于 AuthManager 它又是一个简单工厂模式,因为要根据不同的 guard type 创建对应的类,简单工厂又有开闭的问题,他又有 extend 方法来解决简单工厂的开闭问题。

没有写过较多项目或者参与较复杂项目的经验,学设计模式学了等于白学,因为没有相应的前置知识和经验积累,学这东西就是在死记硬背

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

  1. 要么:哦!对!我工作上项目上次就遇到相关问题,的确用这种方法来可能更好点
  2. 要么:啊?!就这也配叫模式?! 这不是脑子正常点的人,代码写多了自然而然就想出来的写法吗,就这还值得专门给他分配个 xxx 模式的名字吗? (对,我说的就是我第一次看设计模式里工厂模式,singleton 模式的感想)

    先看一遍,然后要做,要思考,多重构,多重构,多重构

    设计模式是答案,如果没有问题有答案也没有用

    什么设计模式, 不存在的, 所有的东西都是函数, 一个函数不够就拆两个。
    主打一个万金油

    这种东西看看就完了。

    求个 javascript 的设计模式

    就是武侠小说里,你以为比的是招式(设计模式),实际上比的是内力(思维模式)

    看下大话设计模式,从场景上思考解决问题的思路。

    这玩意真是学一次忘一次,只有代码量上来了才会用,设计模式更多是一种 OOP 设计的共识,接触时间长了,场景多了,在工程化过程中就会无意识地使用到一些设计模式,无需刻意去用。

    refactoringguru.cn/design-patterns/catalog

    head first: design pattern
    有中文版

    #6 确实,写代码就是走量的同时开始思考那种方法写的简单,好,不断的写,对比就知道了,单单的去先看设计模式相关的书,完全没必要,浪费时间

    我赞同 14 楼,一种共识而已。
    学设计模式,必须 2-3 年经验+。
    踩过一些坑,才知道设计模式能解决什么。
    至于啥优雅的,强行上还不如不上。

  3. 理解目的
  4. 根据自己理解,手写个出来。
  5. 后面该用时,就会想到
    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 那两种反应太真实了