当前位置: 首页 > news >正文

【Java设计模式 思想原则重构】设计思想、设计原则、重构总结

从2022年3月6日开始学习设计模式相关知识【Java设计模式 前言】我为什么要学习设计模式,到现在半年余,终于将设计思想、设计原则、重构相关内容学习完了,设计模式也学习完了创建型结构型,回顾年度目标,不得不说【设计模式】是个难啃的骨头,还是要今年啃完:
在这里插入图片描述
不过学习完了收获也是最大的,这个收获更多的是道的收获,培养的是一种潜意识,可以说内功有所提升这里对设计思想、设计原则、重构相关内容做个总结,设计模式则等待行为型都学习完后再进行一个统一的总结。
在这里插入图片描述

整体目标

回看最初的目标:【Java设计模式 学习目标及大纲】高质量代码的标准及实现路径在这篇Blog里我们明确了什么是高质量的代码:易维护、易读、易扩展灵活、简洁、可复用、可测试,也知道高质量代码的达成路径工具箱:面向对象设计思想是基本指导思想,是很多设计原则、设计模式的实现基础;设计原则是代码设计的抽象经验总结、是设计模式设计的指导原则;设计模式是代码设计的一套具体解决方案或设计思路,主要用来提高代码可扩展性;编程规范是一套可执行的代码编写规范,主要用来提高代码的可读性;代码重构依赖面向对象设计思想、设计原则、设计模式、编程规范实现,主要用来提高代码的可维护性和可读性。

  • 面向对象设计思想因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式等编码实现的基础。理论支撑,实现基础,核心思想:编程规范及代码组织
  • 设计原则是指导我们代码设计的一些经验总结,对于某些场景下,是否应该应用某种设计模式,具有指导意义。比如,“开闭原则”是很多设计模式(策略、模板等)的指导原则。代码组织:高质量编程的道
  • 设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思路。应用设计模式的主要目的是提高代码的可扩展性。从抽象程度上来讲,设计原则比设计模式更抽象。设计模式更加具体、更加可执行。代码组织:高质量编程的术
  • 编程规范主要解决的是代码的可读性问题。编码规范相对于设计原则、设计模式,更加具体、更加偏重代码细节、更加能落地。持续的小重构依赖的理论基础主要就是编程规范。编程规范
  • 代码重构作为保持代码质量不下降的有效手段,利用的就是面向对象、设计原则、设计模式、编码规范这些理论。高质量编程实践

实际上,面向对象、设计原则、设计模式、编程规范、代码重构,这五者都是保持或者提高代码质量的方法论,本质上都是服务于编写高质量代码这一件事的。也可以这么理解:设计思想、设计原则、设计模式、编程规范,在合适的时机进行代码重构,时刻保证和提高代码的质量 ,它们之间的关系可以组织为:
在这里插入图片描述

设计思想

面对对象思想博客列表和文章脉络:

文章列表

序号文章列表
1【Java设计模式 面向对象设计思想】一 再谈面向对象和封装、抽象、继承、多态四大特性
2【Java设计模式 面向对象设计思想】二 再谈面向对象和面向过程
3【Java设计模式 面向对象设计思想】三 再谈抽象类和接口
4【Java设计模式 面向对象设计思想】四 基于接口而非实现编程
5【Java设计模式 面向对象设计思想】五 多用组合少用继承编程
6【Java设计模式 面向对象设计思想】六 再谈MVC贫血模式与DDD领域驱动开发
7【Java设计模式 面向对象设计思想】七 面向对象分析、面向对象设计和面向对象编程

基于以上文章划分的脉络如下:

文章结构

关于面向对象思想的文章结构如下
在这里插入图片描述

关键知识点索引

具体关键概念的索引脑图
在这里插入图片描述

设计原则

关于设计原则的文章列表,文章脉络,概念结构

文章列表

序号文章列表
1【Java设计模式 经典设计原则】一 SOLID-SRP单一职责原则
2【Java设计模式 经典设计原则】二 SOLID-OCP开闭原则
3【Java设计模式 经典设计原则】三 SOLID-LSP里式替换原则
4【Java设计模式 经典设计原则】四 SOLID-ISP接口隔离原则
5【Java设计模式 经典设计原则】五 SOLID-DIP依赖反转原则
6【Java设计模式 经典设计原则】六 KISS、YAGNI和DRY原则
7【Java设计模式 经典设计原则】七 LOD迪米特法则

这其中涉及到不少知识点,总体总结在这里:

文章结构

其中【基于接口而非实现编程】和【多用组合少用继承】不仅是一种编程技巧,也是编程思想和最佳实践。
在这里插入图片描述

关键知识点索引

关键知识索引如下:
在这里插入图片描述

代码重构

重构相关的文章列表、文章脉络和关键索引

文章列表

代码重构部分的文章列表如下:

序号文章列表
1【Java设计模式 规范与重构】 一 重构的目的、内容、时机、方法
2【Java设计模式 规范与重构】 二 重构的保障:单元测试,以及如何提高代码可测试性
3【Java设计模式 规范与重构】 三 大型重构的手段:高内聚,低耦合
4【Java设计模式 规范与重构】 四 小型重构的手段:规范的十五条军规
5【Java设计模式 规范与重构】 五 重构实战:基于ID生成器case

文章结构

代码重构部分的文章结构如下:
在这里插入图片描述

关键知识点索引

关于重构部分知识点,关键索引如下
在这里插入图片描述

总结一下

对于总结的总结来说,好像没什么可说的,一言以蔽之:通过继承、封装、多态、抽象、基于接口而非实现编程、多用组合少用继承、高内聚-松耦合、控制反转等设计思想;SOLID、KISS、DRY、YAGNI、LOD等设计原则和法则;创建型、结构型、行为型这些设计模式;依赖注入等编程技巧;模块化等系统设计技巧;命名与注释、编程风格、编程技巧等编程规范,在持续的重构中发挥作用。通过单元测试保证重构的顺利进行。而最终的目的都是保证易扩展、易维护、易复用、易读、简介、灵活、易测试的高质量代码活力常在。

相关文章:

  • js逆向-逆向基础
  • 【前端】【探究】HTML - input类型为file时如何实现自定义文本以更好的美化
  • 二叉树的dp问题和Morris遍历
  • 重新认识IO以及五种IO模型(理论认识)
  • leetcode: 647. 回文子串
  • SQL语言概述与SQL语言的数据定义
  • NIO知识总结三
  • c语言分层理解(动态内存分配)
  • 【Vite基础】001-使用 Vite 创建 vue3 项目
  • 微服务项目:尚融宝(58)(核心业务流程:提现和还款(1))
  • 限时折扣助力知识店铺销量暴涨
  • 信息学一本通 1213:八皇后问题
  • 网络安全——文件包含漏洞
  • 制造型企业的数字化转型离不开 MES 系统
  • Unity使用新输入系统InputSystem制作飞机大战Demo(对象池设计模式及应用)
  • ----------
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • HTTP 简介
  • Java小白进阶笔记(3)-初级面向对象
  • Laravel 菜鸟晋级之路
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • node.js
  • oldjun 检测网站的经验
  • PAT A1092
  • Rancher如何对接Ceph-RBD块存储
  • ReactNativeweexDeviceOne对比
  • Ruby 2.x 源代码分析:扩展 概述
  • Xmanager 远程桌面 CentOS 7
  • 从伪并行的 Python 多线程说起
  • 大数据与云计算学习:数据分析(二)
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 使用agvtool更改app version/build
  • 因为阿里,他们成了“杭漂”
  • Hibernate主键生成策略及选择
  • #Java第九次作业--输入输出流和文件操作
  • (八)Spring源码解析:Spring MVC
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (二)换源+apt-get基础配置+搜狗拼音
  • (一)appium-desktop定位元素原理
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转) Android中ViewStub组件使用
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net web项目 调用webService
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • .so文件(linux系统)