再谈对设计模式的理解

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

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

再谈对设计模式的理解


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

原则

单一职责

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

依赖倒置

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

思路

多闻”坏“了的味道

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

面向对象的思想

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

体会

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

总结

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

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



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

相关文章

十五.各设计模式总结与对比

1.各设计模式总结与对比 1.1.课程目标 1、 简要分析GoF 23种设计模式和设计原则,做整体认知。 2、 剖析Spirng的编程思想,启发思维,为之后深入学习Spring做铺垫。 3、 了解各设计模式之间的关联,解决设计模式混淆的问题。 1.2.内容定位 1、 掌握设计模式的"道" ,而不只是"术" 2、 道可道非常道,滴水石穿非一日之功,做好长期修炼的准备。 3、 不要为了

回调的简单理解

之前一直不太明白回调的用法,现在简单的理解下 就按这张slidingmenu来说,主界面为Activity界面,而旁边的菜单为fragment界面。1.现在通过主界面的slidingmenu按钮来点开旁边的菜单功能并且选中”区县“选项(到这里就可以理解为A类调用B类里面的c方法)。2.通过触发“区县”的选项使得主界面跳转到“区县”相关的新闻列表界面中(到这里就可以理解为B类调用A类中的d方法

如何理解redis是单线程的

写在文章开头 在面试时我们经常会问到这样一道题 你刚刚说redis是单线程的,那你能不能告诉我它是如何基于单个线程完成指令接收与连接接入的? 这时候我们经常会得到沉默,所以对于这道题,笔者会直接通过3.0.0源码分析的角度来剖析一下redis单线程的设计与实现。 Hi,我是 sharkChili ,是个不断在硬核技术上作死的 java coder ,是 CSDN的博客专家 ,也是开源

MySQL理解-下载-安装

MySQL理解: mysql:是一种关系型数据库管理系统。 下载: 进入官网MySQLhttps://www.mysql.com/  找到download 滑动到最下方:有一个开源社区版的链接地址: 然后就下载完成了 安装: 双击: 一直next 一直next这一步: 一直next到这里: 等待加载完成: 一直下一步到这里

PyTorch模型_trace实战:深入理解与应用

pytorch使用trace模型 1、使用trace生成torchscript模型2、使用trace的模型预测 1、使用trace生成torchscript模型 def save_trace(model, input, save_path):traced_script_model = torch.jit.trace(model, input)<

isa指针的理解

D3实例isa指向D3类对象。D3类的话isa指向D3元类对象。D3元类保存类中的方法调度列表,包括类方法和对象方法

从《深入设计模式》一书中学到的编程智慧

软件设计原则   优秀设计的特征   在开始学习实际的模式前,让我们来看看软件架构的设计过程,了解一下需要达成目标与需要尽量避免的陷阱。 代码复用 无论是开发何种软件产品,成本和时间都最重要的两个维度。较短的开发时间意味着可比竞争对手更早进入市场; 较低的开发成本意味着能够留出更多营销资金,因此能更广泛地覆盖潜在客户。 代码复用是减少开发成本时最常用的方式之一。其意图

WeakHashMap深入理解

这一章,我们对WeakHashMap进行学习。 我们先对WeakHashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用WeakHashMap。 第1部分 WeakHashMap介绍 第2部分 WeakHashMap数据结构 第3部分 WeakHashMap源码解析(基于JDK1.6.0_45) 第4部分 WeakHashMap遍历方式 第5部分 WeakHashMap示例

netty中常用概念的理解

目录   目录ChannelHandler ChannelHandler功能介绍通过ChannelHandlerAdapter自定义拦截器ChannelHandlerContext接口ChannelPipeline ChannelPipeline介绍ChannelPipeline工作原理ChannelHandler的执行顺序   在《Netty权威指南》(第二版)中,ChannelP

安全科普:理解SSL(https)中的对称加密与非对称加密

今天刚好为站点的后台弄了下https,就来分享我了解的吧。 密码学最早可以追溯到古希腊罗马时代,那时的加密方法很简单:替换字母。 早期的密码学:   古希腊人用一种叫 Scytale 的工具加密。更快的工具是 transposition cipher—:只是把羊皮纸卷在一根圆木上,写下信息,羊皮纸展开后,这些信息就加密完成了。 虽然很容易被解密,但它确实是第一个在现实中应用加密的