Java成神之路之设计模式
文章平均质量分 78
原本我以为设计模式不用都学,有幸听得15年老将只言片语,收获颇丰!既然有人总结了23种设计模式那么就有存在的道理,全部掌握意味着你在解决问题时,比别人多了更多的解决方案,加油.
Jayden
自信源于努力!
展开
-
编程最佳实践-转换器模式
如果转换逻辑比较简单,且不需要状态,可以选择定义为接口,并提供默认方法。如果转换逻辑复杂,或者需要维护状态,可以选择定义为类。这里的状态通常指的是转换器中是否需要维护一些信息。原创 2024-05-05 10:32:24 · 457 阅读 · 1 评论 -
写过JDBC就能看懂外观模式
外观模式的核心思想是将多个复杂的调用API操作抽取出来,对外提供一个完备的方法,隐藏内部实现细节,非常符合面向对象思想中的封装思想。它最大的缺点是随着业务的扩展及相关API的改动,外观模式会显的非常臃肿,难以维护,并且与相关API都是紧耦合的关系。原创 2023-02-06 22:21:23 · 144 阅读 · 1 评论 -
面试B轮公司,面试官问我什么是单例模式?
单例模式,顾名思义就是单一实例。可以理解为在项目中的一个类只有一个实例(对象),并且该类提供获取该实例(对象)的方法。Java中很多工具类也会采用私有化的构造方法来保证实例的单一性,但它与单例还是有很多不同的,工具类是不保存状态的,它含有的只是一些静态方法或者静态属性,来供开发者使用,而单例模式如上所说是有状态的,是需要变化的。工具类只是装一些静态方法,静态属性,而单例却是有着唯一的对象实例!单例模式最核心的点就在于单,单身狗的单,它只产生单(一)个对象。原创 2023-02-05 22:20:35 · 914 阅读 · 0 评论 -
模板方法模式让我回忆起小时候抄黑板上数学题目的事
模板方法模式封装了不变的部分,扩展可变的部分。这种设计思想是非常符合开闭原则的,并且提高了程序的利用率。当然它也有一定的缺点,我认为最大的缺陷是基类添加一个新的抽象方法,那么已经实现的所有子类都必须修改。原创 2021-10-25 19:04:17 · 128 阅读 · 0 评论 -
360面试:可以说说原型模式的浅复制与浅复制吗
本期要和大家分享的是自己对于原型模式的理解,原型模式是创建型模式,所谓创建型模式可以简单理解为,是创建对象模式,创建型模式分享完后,从下篇文章开始,分享结构型模式。什么是原型模式 **原型模式复制已有对象,而又无需使代码依赖它们所属的类。**在Java中只要使用了new关键字,那么这个就是定义中所说的依赖。依赖意味着耦合,而原型模式整好解决了这个问题。入门小案例 该案例代码比较简洁,意让大家快速理解原型模式。Object这个类大家并不既陌生,它是所有类的父类,在Object中有个clone(原创 2021-07-03 16:15:52 · 64 阅读 · 1 评论 -
工厂中的流水线竟然是活生生的建造者模式
看个图放松一下 从度娘上找了一个动图,很清楚的可以看到这是一条流水线。黄色衣服的工人负责将盒子放进袋子里,蓝色工人负责将袋子密封。流水线大家应该都清楚,就是每个人专门负责一道工序,一个完整的产品需要经过所有的流水线工人。这个现实中的例子刚好可以帮助大家理解建造者模式。建造者模式 《大话设计模式》定义:建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 初探设计模式的小伙伴可能不太理解这个定义,大家可以简单理解为,new就是将对象的构建与表示合在一起了,=左边原创 2021-06-30 07:24:56 · 240 阅读 · 1 评论 -
小白看抽象工厂模式,看这篇文章就好了
回顾工厂方法模式上篇文章介绍的是工厂方法模式,它的UML类图是这样的 工厂方法模式中的例子是计算器,加减乘除四个工厂类都必须实现FactoryMethod这个向上抽取的接口,并根据自己的产品(加法工厂new的加法对象,减法工厂new的是减法对象,乘法对象new的是…)重写接口中的createOperation()方法。这四个工厂虽然可以产生不同的运算对象,但是他们都有一个共同的爹,那就是Operation。这时候就会出现问题,往下看。听个故事 话说莆田有一个富豪叫老林,老林手底下有一个大工厂,原创 2021-06-27 16:29:29 · 84 阅读 · 0 评论 -
面试官让我用工厂方法模式优化一下代码
回顾简单工厂模式上回专栏介绍了简单工厂模式,它的UML类图是这样的 简单工厂模式中使用工厂类创建出加减乘除对应的四个‘产品’,此时我们创建对象是在工厂类中通过switch的case来决定。如果此时计算机需要增加一个取余的方法,我们如何做呢?新建一个取余运算类继承父级运算类Operation在工厂类OperationFactory的switch中新增一个case语句(需要修改这个类的代码) 新建个取余类不会影响什么,但是修改OperationFactory类中的代码就违反了开闭原则,并且每原创 2021-06-24 21:45:20 · 191 阅读 · 1 评论 -
我说我会懒汉式单例,面试官连续问了4个问题
本文主要围绕懒汉式单例模式展开,主要是关于线程安全。 看过我单例模式的下伙伴都知道,实际单例模式的定义很简单,就是有个私有的无参构造,以及对外提供一个获取单例的方法。懒汉式最简单的方式是这样的:public class LazySingeton { private static LazySingeton singeton; private LazySingeton() { } public LazySingeton getSingeton() {原创 2021-06-20 14:52:40 · 100 阅读 · 0 评论 -
非常一个有意思的设计模式--装饰模式
本文的主体是装饰模式,那么什么是装饰模式呢?在谈这个概念之前先给广大女朋友(理论上来说,所有未婚女性都有可能是我女朋友)送波礼物: 收礼物应该是女同胞的最爱了,作为一个女孩子,肯定希望自己的男朋友可以给足惊喜。我知道很多男人是没有办法创造这种浪漫的氛围的,好吧,小林代劳了,送女孩子们一个礼物,大大的爱心! 通过图我们可以很清晰的看到,红色盒子装着蓝色盒子,蓝色盒子又装着绿色盒子。绿色的盒子里装着我们的小心心。那么我们的小心心是不是就被装饰起来了呢?用绿色盒子装饰小心心,用蓝色盒子装饰绿色盒子,原创 2020-12-04 08:15:13 · 212 阅读 · 0 评论 -
聊聊开发中的几个原则:单一职责原则,开放-封闭原则,依赖倒转原则
这几个原则看的真的是枯燥无味,单一职责原则跟开放-封闭原则可以很好的去理解,依赖倒转,是真的难理解,可能是还没接触后面的设计模式吧,毕竟刚来京都不久,涉世未深,这里记录一下,等学完23种设计模式后再来重构这篇文章。单一职责原则 我想大家都听过这么一句话,术业有专攻。这句话呢,非常好理解:就是每个人的特长都是不一样。比如刚入职场的小林,它对后端技术栈有清晰的认识,目前也在努力的学习设计模式,但是小林写前端就不行了,Vue一无所知。 假设时间回到小林上大学的时候,小林喜欢编程,一会学后端,一会学前原创 2020-11-27 15:34:44 · 203 阅读 · 0 评论 -
早点知道它,我可能就有对象了:代理模式
如题目所说,可能我早点知道代理模式,我就是个有对象的人了。不过现在已经有对象了,今天是对着女朋友写文章的一天。给大家看看对象的照片: 开个玩笑,其实刘涛是我非常喜欢的明星,她主演的电视剧《欢乐颂》不知道大家有没有看过,在这部剧中有这么一个剧情,樊胜美的父亲住院马上要手术,但是没钱,本来是安迪(刘涛演的)处理这件事,但是安迪经受不住,所以请魏总帮她处理手术费的事。这个剧情里,我们重点关注三个点:第一个,本来应该处理樊家事是安迪;第二个,魏总跟樊家本来没有一点关系;第三就是处理原创 2020-11-26 15:06:59 · 117 阅读 · 0 评论 -
策略模式从零到一,奥利给!
上一篇文章介绍了什么是面向对象编程,以及简单的工厂模式,第二篇文章呢说的是23中设计模式中的策略模式,对,就是本专栏第一个设计模式文章!首先设计模式这四个字我想应该很容易理解,说白点就是做一件事的不同方法,最终效果是一样的,但是做的过程是不同的。tips:在本人知乎专栏中有一篇Thread类源码解析的文章,Thread类实际上用到的就是策略模式。这两篇文章都看,相信你会掌握策略模式的!创建线程的三种方式及Thread源码解析 - Evader1997的文章 - 知乎https://原创 2020-11-23 08:16:42 · 143 阅读 · 0 评论 -
简单工厂模式:我才真正知道什么叫面向对象编程!
自学Java也算是很长一段时间了,对于大部分初学Java的人来说,面向对象这四个字好像深入骨髓。直到我看了《大话设计模式》后我才发现,我对面向对象编程好像一无所知,我只直到面向对象编程有三大特性:封装,继承,多态。对,这三个特性早以被遗忘,对...原创 2020-11-20 21:15:45 · 186 阅读 · 0 评论