自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 【设计模式之旅】10|设计原则之里式替换原则(LSP)

前言:前面我们介绍了 SOLID 原则中的单一职责原则和开闭原则,这两个原则都比较重要,想要灵活应用也比较难,需要你在实践中多加练习、多加体会。今天,我们再来聊聊SOLID 中的“L”对应的原则:里式替换原则。整体上来讲,这个设计原则是比较简单、容易理解和掌握的。今天我主要通过几个反例,带你看看,哪些代码是违反里式替换原则的?我们该如何将它们改造成满足里式替换原则?除此之外,这条原则从定义上看起来,跟我们之前讲过的“多态”有点类似。所以,我今天也会讲一下,它跟多态的区别。 如何理解里式替换原则? ..

2022-02-14 16:30:36 152

原创 【设计模式之旅】09|设计原则之开闭原则

前言:今天,我们来聊一聊SOLID 中的第二个原则:开闭原则。我个人觉得,开闭原则是 SOLID 中最难理解、最难掌握,同时也是最有用的一条原则。之所以说这条原则难理解,那是因为,“怎样的代码改动才被定义为‘扩展’?怎样的代码改动才被定义为‘修改’?怎么才算满足或违反‘开闭原则’?修改代码就一定意味着违反‘开闭原则’吗?”等等这些问题,都比较难理解。之所以说这条原则难掌握,那是因为,“如何做到‘对扩展开放、修改关闭’?如何在项目中灵活地应用‘开闭原则’,以避免在追求扩展性的同时影响到代码的可读性?”等等这.

2022-02-14 16:06:18 78

原创 【设计模式之旅】08|设计原则之单一职责原则

前言:在前面,我们介绍了面向对象相关的知识。从今天起,我们开始学习一些经典的设计原则,其中包括,SOLID、KISS、YAGNI、DRY、LOD 等。这些设计原则,从字面上理解,都不难。你一看就感觉懂了,一看就感觉掌握了,但真的用到项目中的时候,你会发现,“看懂”和“会用”是两回事,而“用好”更是难上加难。从我之前的工作经历来看,很多同事因为对这些原则理解得不够透彻,导致在使用的时候过于教条主义,拿原则当真理,生搬硬套,适得其反。所以,在接下来的讲解中,我不仅会讲解这些原则的定义,还会解释这些原则设计的初.

2022-02-10 10:27:30 190

原创 【设计模式之旅】07|为何多用组合少用继承?如何决定该用组合还是继承?

前言:在面向对象编程中有一条非常经典的设计原则,那就是:组合优于继承,多用组合少用继承。为什么不推荐使用继承?组合相比于继承有哪些优势?如何判断该用组合还是继承?今天我们围绕这三个问题讨论下这个设计原则。 为什么不推荐使用继承? 继承是面向对象的四大特性之一,用来表示is-a的关系,可以解决代码复用的问题。虽然继承有诸多作用,但是继承层次过深、过复杂,也会影响代码的可维护性。关于继承网上有很多争议认为继承是一种反模式,应该尽量少用,甚至不用。 ...

2022-02-09 15:55:51 417

原创 【设计模式之旅】06|哪些代码设计看似是面向对象,实际是面向过程的?

前言:我们常见到的编程范式或者编程风格有三种,面向过程、面向对象、函数式,其中面向对象是主流的编程范式。在从事使用面向对象语言开发过程中,你写的代码到底是不是面向对象的呢?下面我们具体聊聊。 哪些代码设计看似是面向对象设计,实际是面向过程的? 1.滥用getter、setter方法 在之前的项目开发过程中,小编经常看到,有同事定义完类属性之后,就顺手把这些属性的getter、setter方法都定义上。还有些同事更加省事,直接食用ide或loombok(java)自动生成 各属性的getter、se.

2022-02-02 09:57:08 603

原创 【设计模式之旅】05|封装、抽象、继承、多态分别可以解决那些编程问题?

前言:上一节我们简单提到了面向对象的四大特性,这一节我们聊一聊每个特性存在的意义和目的,以及他们能够解决那些编程问题。 封装(Encapsulation) 封装也叫信息隐藏或者数据访问保护。类通过暴露有效的访问接口,授权外部仅能通过类提供的方式来访问内部信息或者数据。对于封装的特性,我们需要编程语言本身提供的一套机制来支持即访问权限控制。换句话说如果不对类内部的属性进行访问权限控制,属性可以被随意地修改,而且修改逻辑可能散落在代码的任意角落,势必会影响代码的可读性,可维护性,同时很容易造成数据的不一.

2022-01-27 21:32:23 364

原创 【设计模式之旅】04|当谈论面向对象的时候,我们到底在谈论什么?

前言:提到面向对象我相信很多人都不陌生,随口基本就能说出面向对象的四大特性:封装、继承、多态、抽象。然而实际上面向对象的内容并不止这些。由于面向对象的设计思想将贯穿我们整个设计模式之旅。所以我们今天聊一下谈论面向对象时经常用到的一些概念及知识点。 什么是面向对象编程(OOP)和面向对象编程语言(OOPL) 面向对象编程中有两个非常重要、非常基础的概念,那就是类和对象。 面向对象编程是一种编程范式或编程风格。它以类和对象作为组织代码的基础单元,并将封装、继承、多态、抽象四个特性,作为代码设计和实现的.

2022-01-27 20:25:09 513

原创 【设计模式之旅】03|面向对象、设计原则、设计模式、编程规范、重构

前言:前面小编曾经提到过,要具备写高质量代码的能力,你需要学习一些编程方法论,其中就包含面向对象、设计原则、设计模式、编程规范、重构技巧等。下面我们就来介绍下这几个概念及他们之间的关系。 ...

2022-01-26 10:52:35 83

原创 【设计模式之旅】02|如何评判代码质量的好坏,又如何写出高质量代码

前言:相信每一个程序员都去评论或吐槽过别人写的代码很烂、很NICE。但是呢用好和坏去评论别人的代码非常笼统、零碎、不全面、无法切中要害。如果往深了问到底是个如何烂法,如何好法,相信就有人犯嘀咕了。也有的程序员对代码好坏有自己的见解,比如易扩展、易读、简单、易维护等但是也仅仅只是停留在概念的表面。然而对于程序员来说,辨别代码写的好、烂是一个非常重要的能力,这也是我们写出优质代码的前提,接下来我们就深入了解下到底什么样的代码是好代码、什么样的代码是烂代码。 如何评价代码质量的高低? 其实我们平时对代.

2022-01-25 18:13:37 504

原创 【设计模式之旅】01|开篇:我们为什么要学习设计模式

前言:很多程序员都已经意识到了基础知识的重要性,认为夯实基础才能走的更远,但同时又有将基础知识如何转化为生产力仍然有疑惑。这就产生了一个这样一种情况,你可能看了很多基础类技术书籍例如操作系统,组成原理,编译原理等,但是依然迷茫。比如这些东西如何用在平时的crud。确实,实际上这些知识很难直接转化成生产力。但是他却能间接的潜移默化的提高你对技术的理解。说了这么多其实我的主题是设计模式,我们很多时候都觉得设计模式就好似一把屠龙刀,看似威力无边却无用武之地。实则不然,设计模式是大到系统小到模块最能展示代码功底的.

2022-01-25 09:13:54 347

原创 2021-03-28

关于提高Java并发锁性能的几点建议 大家都知道锁是最常用的同步方法之一,在高并发环境下,激烈的锁竞争是导致程序性能降低的重大原因之一,因此我们有必要讨论一些有关锁性能的问题,下面介绍几点关于提高锁性能的几点建议. 减少锁的持有时间 只有在有必要的时候进行同步,这样就能明显减少锁的持有时间,进而降低锁冲突的可能性,进一步提高系统的并发能力。 减小锁粒度 减小锁粒度也是一种消弱多线程锁竞争的有效手段,例如ConcurrentHashMap类的实现,以JDK1.7为例,内部是通过默认16个segment

2021-03-28 12:57:14 66

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除