再谈对设计模式的理解

2024-05-08 08:32
文章标签 设计模式 理解 再谈

本文主要是介绍再谈对设计模式的理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

再谈对设计模式的理解


近期在公司,相对之前的工作环境,学习新的技术的时间少了很多。但是对所谓的旧知识却有了更深一步的理解。最近每每看 无论是大话还是headfirst 里面经典的改造方式都会心生惊喜。设计模式的原则和方法书中都 提到了很多。结合自己的感触谈几点。

原则

单一职责

一个庞大的系统来说,单一职责更方便开发和维护。对于类来说,一个类只做一件事。 对于方法来说,尽可能也单口入,单口出,只做一件事。力度合适,不至于冗余,也极大的提高了代码的复用程度。近期做的项目中,看到离职的人一个类5000行的代码,小编真的累觉不爱。同样,小编也看到过写的棒棒的代码。读起来赏心悦目。一看就知道这个类是用来做什么的,看到好多方法被引用的次数都有大几次。复用啊~
还有一个好处,是在这个项目中血的教训。面对需求的变更,各个功能糅合在一起,无论是新加需求还是简单的变更,总会“牵一发而动全身”。不是非常不利于开发,是简直不能开发。

依赖倒置

依赖抽象,不依赖细节。怎么样才能让自己的代码越写越轻松,怎么样才能让自己拥抱变化。找到共同点,并不断的去抽象和提炼去品味自己的代码。

思路

多闻”坏“了的味道

当我们实现某一个功能时,发现自己总写一样的代码。发现表面不一样,实际逻辑是一样的。发现一小部分代码总要不断的去重复。这时候,我们都可以抽象。抽象出一个方法,写一个接口,或是写一个抽象类, 一个虚方法。几处简单的变化,就能让我们的代码富有灵动性。

面向对象的思想

这总是一个循序渐进没有终点的过程。和面向对象比较起来,一个总是在想 这一步干什么, 下一步要干什么,最后一步要干什么。而面向对象要思考,这个类是用来干什么的,它能干什么。另一个类是用来干什么的,它又有什么那些本领。

体会

无论是哪一种设计模式,都是在基于继承,封装,多态不断的组合来解决特定的问题。通过近期的项目,感觉实用性很强。有一种”开发者心态“是总想着先完成功能吧,以后慢慢优化。实际上,坏的代码就是这样一点点积累的。当然可能考虑的不全面,的确需要功能实现以后再优化。但是,致力于做一个高级开发, 架构师 总要在动手之前,先动动脑子。
如果你的代码里一点抽象,都没有不管写的多完美无懈可击也顶多是一个优秀的实习生,而已。
设计模式的思想能给我们的代码插上翅膀~

总结

    代码体现着一个程序员的态度和品质。让代码铸就自己的品牌。

这篇关于再谈对设计模式的理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/969830

相关文章

GO语言zap日志库理解和使用方法示例

《GO语言zap日志库理解和使用方法示例》Zap是一个高性能、结构化日志库,专为Go语言设计,它由Uber开源,并且在Go社区中非常受欢迎,:本文主要介绍GO语言zap日志库理解和使用方法的相关资... 目录1. zap日志库介绍2.安装zap库3.配置日志记录器3.1 Logger3.2 Sugared

深入理解Redis线程模型的原理及使用

《深入理解Redis线程模型的原理及使用》Redis的线程模型整体还是多线程的,只是后台执行指令的核心线程是单线程的,整个线程模型可以理解为还是以单线程为主,基于这种单线程为主的线程模型,不同客户端的... 目录1 Redis是单线程www.chinasem.cn还是多线程2 Redis如何保证指令原子性2.

深入理解MySQL流模式

《深入理解MySQL流模式》MySQL的Binlog流模式是一种实时读取二进制日志的技术,允许下游系统几乎无延迟地获取数据库变更事件,适用于需要极低延迟复制的场景,感兴趣的可以了解一下... 目录核心概念一句话总结1. 背景知识:什么是 Binlog?2. 传统方式 vs. 流模式传统文件方式 (非流式)流

深入理解Go之==的使用

《深入理解Go之==的使用》本文主要介绍了深入理解Go之==的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录概述类型基本类型复合类型引用类型接口类型使用type定义的类型不可比较性谈谈map总结概述相信==判等操作,大

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

深入理解go中interface机制

《深入理解go中interface机制》本文主要介绍了深入理解go中interface机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前言interface使用类型判断总结前言go的interface是一组method的集合,不

Java Spring的依赖注入理解及@Autowired用法示例详解

《JavaSpring的依赖注入理解及@Autowired用法示例详解》文章介绍了Spring依赖注入(DI)的概念、三种实现方式(构造器、Setter、字段注入),区分了@Autowired(注入... 目录一、什么是依赖注入(DI)?1. 定义2. 举个例子二、依赖注入的几种方式1. 构造器注入(Con

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语