灸哥问答:作为初学者如何学习设计模式?

53d3f6453fc3449cb0cfbd187fc6b61a.jpeg

最近开始把几年前关于设计模式的笔记逐步整理出来,并且分享给大家。讲设计模式的书籍、视频比比皆是。这次我针对每一个设计模式分为五个方面进行介绍:

  1. 什么是 X 设计模式?(是什么?)
  2. 为什么用 X 设计模式?(为什么?优势)
  3. 如何用 X 设计模式?(怎么用?使用简单的代码示例演示该设计模式的使用方式)
  4. 是否存在缺陷和不足?(设计模式不是万能的)
  5. 如何缓解缺陷和不足?(方法永远比问题多)

基于以上五个方面已经介绍了一些设计模式,有一些朋友问:作为初学者应该如何学习设计模式?今天我会从我的学习过程、我对下属的培养过程,给出我对设计模式学习的建议。

在讲之前我有一个前提先同步大家:设计模式不是万能的,用就好好用,如果用不好,不如不用!

一、理论准备

  1. 学习并掌握基本的编程知识:如果一个人连最基础的编程知识都没有,那就不要学习设计模式了。学也学不会的。这块主要要对编程语言,比如 Java,以及面向对象编程的知识有一定的了解和掌握,这样才能更好地开始学习设计模式。
  2. 学习并掌握设计原则:这部分的内容我前面都有详细介绍过,一般书本讲的都是 SOLID 原则,在这个基础上提出了软件设计七原则,包括 SOLID + CARP + LoD,建议使用我的内容好好学习掌握。
  3. 学习并掌握设计模式:找一本设计模式的书、视频或者我这个系列的也可以,你如果有一个理论指导,然后针对每一个设计模式去理解他的原理和实际应用的场景。先从常用的简单的开始,这样学习才能持续下去。当然你学习过程中有什么问题欢迎和我交流。

二、辅助学习

  1. 找寻优秀的设计模式实例进行学习:比如 Spring 中单例模式的使用,很经典,我经常和我的下属们说,这部分的源码好好啃下去,对单例的理解程度会晋级的。这部分代码不难找,网络上介绍的有很多。
  2. 善于使用工具来深化学习程度:有一些设计工具能帮助你在学习的过程中更好地理解设计模式,比如一些设计模式的可视化工具、UML 制图工具等,可以尝试地用起来,画起来。
  3. 善于利用博客、社区、公众号资源:这个就不多少了,不仅是通过这些渠道看理论、看代码示例,更多地是看别人是如何学习的,分享学习的经验、交流学习的教训。

三、动手并持续

  1. 动手实战:学任何技术不动手是学不会的,关于设计模式的学习也是一样的,你要动手去写才行,这又两种模式,一种是自己写,一种是在实际项目中去写,只有通过多用才能更好地掌握,但是别忘了我开篇的前提,而且在用的过程中,要注重在实际场景中你使用何种设计模式解决问题的思考过程。
  2. 重复学习和持续实践:关于技术的学习不是用一次就掌握的,理论也不是看一遍就理解的,必须是一个重复学习的过程,也必须是一个持续实践的过程。

 

要记住,设计模式,它是解决特定问题的通用模板,但并不是所有问题都需要设计模式。

在实践中,根据具体情况灵活运用设计模式,并在不断的实践中逐渐提高你的设计水平。

 

以上是我的一些建议和看法,希望可以帮到你。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/310181.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Grafana增加仪表盘

1.Grafana介绍 grafana 是一款采用Go语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。 Grafana下载地址:https://grafana.com/g…

image 标签的 width 和 height 有大作用!!!

image 标签的 width 和 height 有大作用!!! 我们将在这里探讨一个问题, 如果在加载图片之后不影响图片下边文字的移动. 在给出答案之前, 要知道 width 在 2019 年之后 有了更多能力. 也就是浏览器会根据 width 和 height 计算 aspect-ratio. 当然, 为了实现我们的目标, 提前知…

YOLOv8改进 添加可变形注意力机制DAttention

一、Deformable Attention Transformer论文 论文地址:arxiv.org/pdf/2201.00520.pdf 二、Deformable Attention Transformer注意力结构 Deformable Attention Transformer包含可变形注意力机制,允许模型根据输入的内容动态调整注意力权重。在传统的Tra…

【MYSQL】-函数

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

虚拟化技术和云计算的关系

1、云计算底层就是虚拟化技术。 (1)常见的虚拟化技术:VMware(闭源的,需要收费)、XEN、KVM (2)大部分公司用的虚拟化方案:XEN、KVM 2、虚拟化的历史 (1&am…

List常见方法和遍历操作

List集合的特点 有序: 存和取的元素顺序一致有索引:可以通过索引操作元素可重复:存储的元素可以重复 List集合的特有方法 Collection的方法List都继承了List集合因为有索引,所以有了很多操作索引的方法 ublic static void main…

zookeeper之集群搭建

1. 集群角色 zookeeper集群下,有3种角色,分别是领导者(Leader)、跟随着(Follower)、观察者(Observer)。接下来我们分别看一下这三种角色的作用。 领导者(Leader): 事务请求(写操作)的唯一调度者和处理者,保…

Java项目:100SpringBoot图书管理系统

博主主页:Java旅途 简介:分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 图书管理系统基于SpringBootMybatis开发,系统分为两种角色,分别是管理员和普通用户。 管理员功能如下: 书籍类别管理…

最新ChatGPT网站源码,支持Midjourney绘画,GPT语音对话+GPT-4识图理解能力+ChatFile文档对话总结+DALL-E3文生图

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

Python中property特性属性是什么

在Java中,通常在类中定义的成员变量为私有变量,在类的实例中不能直接通过对象.属性直接操作,而是要通过getter和setter来操作私有变量。 而在Python中,因为有property这个概念,所以不需要写getter和setter一堆重复的代…

遇到DDOS怎么办,盾真的可以抗攻击吗

网络在以难以想象的速度发展,黑客们针对网络漏洞发起的攻击也从未停止,但复杂的网络环境让网络安全的维护更为艰难,如果游戏公司没有做好防御措施,黑客发起攻击只是时间问题。在网络攻击愈加多元化的今天,游戏行业可以…

【C语言】一篇文章深入解析联合体和枚举且和结构体的区别

文章目录 📝前言🌠 联合体类型的声明🌉联合体的特点 🌠相同成员的结构体和联合体对⽐🌉联合体⼤⼩的计算 🌠联合体应用🌉枚举类型的声明 🌠枚举类型的优点🌉 枚举类型的使…