【Java设计模式 前言】我为什么要学习设计模式

简介: 【Java设计模式 前言】我为什么要学习设计模式

如果没记错的话《Head First 设计模式》这本书买的已经是第三遍了,真可谓是收藏一直在路上,学习从未能开始,真正的开始学习之前我觉得有必要复盘下之前两次失败开始的原因。

  • 第一次买这本书是读研二下学期的时候,那个时候听说这本书很好,刚好实验室经费可以买书,于是就买了这本书,但是结果是草草翻了几页了事,现在应该还躺在实验室的某个角落,至于原因主要是当时在积极的准备面试所以各个方面的知识也就是都做到简单知道两个即可用来应付面试而已,说白了就是设计模式这个角度的面试题随便找两篇八股背背了事,没有时间学习
  • 第二次买这本书应该是2020年在当时的公司有段时间工作不太忙,想看看有什么好学习的,就找到了设计模式。但是因为当时公司使用的语言是C#,而这本书主要语言是Java,所以就以此为借口把书搁置一旁了。实际上还是没有恒心。

以上两次失败开始的主要原因大抵可以总结如下:

  1. 表面原因:语言不一致,C#和Java有些不通;着急准备面试没功夫细细探究
  2. 核心原因:没有养成长期学习的习惯,恒心差,随时会被别的事情打破学习节奏
  3. 底层原因:对于技术的体验和了解还没有到阶段,依旧沉迷于具体的术而未开始踏足抽象的道,很多大佬说要学原理,不过也需要从浅层再到原理,所以之前在浅层阶段的术也是必经之路

那么现在为什么又要捡起来了呢?

  1. 语言终于回到Java了,生态也是Java的生态,工作中有时是会遇到一些设计上的难题,无从下手。很多东西都是凭感觉去设计,没有理论依据,但感觉会给人一种不可靠的反馈,会心虚,担心自己的设计之后不好扩展,代码越来越臃肿成为屎山。
  2. 过去两年从2020年初开始到现在养成了一个长期的学习习惯,不管工作忙还是不忙,都已经将学习作为一种习惯来接受了,所以是会从生活中预留充足的时间去学习的。
  3. 过去两年接触了比较广泛的知识,从中间件(kafka、redis、elasticsearch)到数据库的底层原理、各类java框架(spring、springmvc、springboot)、远程调用框架(retrofit、dubbo)等等,感觉对术的积累已经到了一定阶段,并且在学习各类知识底层原理的时候偶尔能抽象出一些共性的东西,隐约能体会到一些诸如:高内聚、低耦合、面向接口编程、retrofit代理调用、mybatis动态代理、kafka订阅-通知、spring全局单例、工厂方法等等,但是这些思想都是支离破碎的,没有统一的描述

所以第三个原因:底层原因看起来有点悬乎,实则是最终驱使我投入这块学习内容的关键,当一个知识成为你对技术掌握的痛点后,学习完才最有效果,收获才最大,同时大量的实践也将给我指明具体的学习路径。于是我将设计模式加入到今年一个重点学习计划:

并且有别于年初的优先级2,把它提到一个高优的位置去学习,接下来的三个月左右估计都是在于设计模式共舞了。行文至此,分享下《Head First 设计模式》关于设计模式的学习阶段:

  1. 初学者的心智: 初学者到处使用模式。这很好:初学者可以借此培养许多使用模式的实战经验。初学者也认为“我使用越多模式,我的设计就越好”。初学者将慢慢认识到并非如此,所有的设计都应该尽量保持简单。只有在需要实践扩展的地方,才值得使用复杂性和模式
  2. 中级人员的心智:随着学习的进程,中级人员的心智开始能够分辨何时需要模式,而何时不需要。中级人员的心智依然会企图把过多的模式套用在不适当的地方,但他们也开始察觉到有些模式并不适合目前的情况,可以对其改编以使其适合。
  3. 悟道者的心智:悟道者的心智能够看到模式在何处能够自然融人。悟道者的心智并不急切于使用模式,而是致力于最能解决问题的简单方案。悟道者的心智会考虑对象的原则,以及它们之间的折衷。当对模式的需要自然出现时,悟道者的心智就拿捏得宣地采用模式。悟道者的心智也能看到相似模式之间的关系,以及它们在意图上的微妙差异。悟道者的心智也同于初学者的心智不会让这此模式的知识过度影响设计的决策。

初学者拿着业务找模式,中级者在业务需要的时候使用模式,悟道者可以随心所欲不逾矩的使用模式,此时模式也不再具体,而是实现业务的方法而已,可以理解为模式内化为经验,成为下意识的选择了吧。

相关文章
|
25天前
|
Java 调度 开发者
Java线程池ExecutorService学习和使用
通过学习和使用Java中的 `ExecutorService`,可以显著提升并发编程的效率和代码的可维护性。合理配置线程池参数,结合实际应用场景,可以实现高效、可靠的并发处理。希望本文提供的示例和思路能够帮助开发者深入理解并应用 `ExecutorService`,实现更高效的并发程序。
33 10
|
28天前
|
Java 数据库连接 数据库
【潜意识Java】深度分析黑马项目《苍穹外卖》在Java学习中的重要性
《苍穹外卖》项目对Java学习至关重要。它涵盖了用户管理、商品查询、订单处理等模块,涉及Spring Boot、MyBatis、Redis等技术栈。
75 4
|
28天前
|
前端开发 Java 数据库连接
【潜意识Java】深度解读JavaWeb开发在Java学习中的重要性
深度解读JavaWeb开发在Java学习中的重要性
29 4
|
28天前
|
存储 移动开发 算法
【潜意识Java】Java基础教程:从零开始的学习之旅
本文介绍了 Java 编程语言的基础知识,涵盖从简介、程序结构到面向对象编程的核心概念。首先,Java 是一种高级、跨平台的面向对象语言,支持“一次编写,到处运行”。接着,文章详细讲解了 Java 程序的基本结构,包括包声明、导入语句、类声明和 main 方法。随后,深入探讨了基础语法,如数据类型、变量、控制结构、方法和数组。此外,还介绍了面向对象编程的关键概念,例如类与对象、继承和多态。最后,针对常见的编程错误提供了调试技巧,并总结了学习 Java 的重要性和方法。适合初学者逐步掌握 Java 编程。
52 1
|
4月前
|
XML Java 编译器
Java学习十六—掌握注解:让编程更简单
Java 注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。
124 43
Java学习十六—掌握注解:让编程更简单
|
3月前
|
设计模式 消息中间件 搜索推荐
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
|
3月前
|
设计模式 Java 数据库连接
Java编程中的设计模式:单例模式的深度剖析
【10月更文挑战第41天】本文深入探讨了Java中广泛使用的单例设计模式,旨在通过简明扼要的语言和实际示例,帮助读者理解其核心原理和应用。文章将介绍单例模式的重要性、实现方式以及在实际应用中如何优雅地处理多线程问题。
56 4
|
4月前
|
存储 SQL 小程序
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
这篇文章详细介绍了Java虚拟机(JVM)的运行时数据区域和JVM指令集,包括程序计数器、虚拟机栈、本地方法栈、直接内存、方法区和堆,以及栈帧的组成部分和执行流程。
66 2
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
|
3月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
3月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。

热门文章

最新文章