设计模式
文章平均质量分 89
分享总结23种设计模式,并再jdk中找到对应的实践案例
逆流°只是风景-bjhxcc
当你的才华还撑不起你的野心的时候,你就应该静下心来学习;当你的能力还驾驭不了你的目标时,就应该沉下心来,历练;梦想,不是浮躁,而是沉淀和积累,只有拼出来的美丽,没有等出来的辉煌,机会永远是留给最渴望的那个人,学会与内心深处的你对话,问问自己,想要怎样的人生,静心学习,耐心沉淀,送给自己,共勉。
展开
-
【设计模式】谈谈我们工作中的23个设计模式
一个方面是这些功能块从主体来说是比较内聚的,另一个来方面说,对工作职责的细分,可以让大家把自己的事情干好,发挥团队作战的效能:开发把开发干好,测试把测试干好,资损防护同学把资损防护干好,整体也就做好了。这里还想提的是,很多时候,我们只看到了我们复用了庞大的基础能力,但是也要看到我们在项目中增量的贡献,这是我们的闪光点。这里我们的工作思路是,我们不用展示复杂的细节,我们要提供一些高层的理解,汇报如此,系统的包装也是如此。对工作中来说,我们可能有状态好的时候,有状态不好的时候,主观的处理的手段是调整状态。原创 2022-11-17 19:35:30 · 883 阅读 · 0 评论 -
【设计模式】手写一个线程安全的单例模式
单例模式是我们非常常用的设计模式之一。百度百科给出的定义:单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,如:仅线程上下文内使用同一个实例)一般,我们为了实现单例模式,通常把构造器私有化,然后通过静态方法和静态变量来获取一个对象。原创 2023-06-14 10:28:52 · 1628 阅读 · 0 评论 -
【设计模式】状态模式
状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。当然,如果这个状态判断很简单,那就没必要用状态模式了。状态模式(State)是一种行为型设计模式,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。(可以说当到饭点了,你就会主动去找饭吃)将状态转换和行为隔离开来,使得状态变化时只需要改变状态类对象即可,无需修改Context类,从而保证了系统的灵活性、可扩展性和可维护性。原创 2023-05-15 09:03:55 · 1123 阅读 · 0 评论 -
【面试】Java枚举--为什么它是单例模式的最佳选择?
单例模式,是工作中比较常见的一种设计模式,通常有两种实现方式,懒汉式和饿汉式。但是这两种实现方式存在一些问题。懒汉式需要在多线程环境下使用同步锁机制来保证只有一个实例被创建,这会影响程序的性能。而饿汉式在类加载时就创建实例,会导致程序在启动时变慢,同时也无法延迟实例的创建,这可能会浪费系统资源。所以今天介绍一下,为什么枚举是实现单例模式的最佳选择。首先,枚举实例是线程安全的,多线程环境下不会出现线程安全问题。原创 2023-05-06 08:51:45 · 716 阅读 · 0 评论 -
【设计模式】责任链模式--优雅解耦系统处理流程,实现高效灵活的请求处理与分发
责任链模式是一种行为型设计模式,它用于将多个请求处理器对象连接成一条链,可以让请求沿着这条链不断地传递,直到有一个请求处理器处理完成为止。在责任链模式中,每个请求处理器都可以选择将请求进行处理,或将请求转发给下一个请求处理器。因此,责任链模式可以将系统中的请求处理逻辑进行解耦,使得请求的发送者和接收者之间的关系更加灵活。责任链模式是一种行为型设计模式,用于将多个请求处理器对象连接成一条链,可以让请求沿着这条链不断地传递,直到有一个请求处理器处理完成为止。原创 2023-05-05 10:02:07 · 698 阅读 · 0 评论 -
【设计模式】模板方法模式--让你的代码更具灵活性与可扩展性
在软件开发中,设计模式是一种经过实践检验的、可复用的解决方案,它们可以帮助我们解决某一特定领域的典型问题。设计模式不仅能提高代码的可读性、可维护性,还能让我们的代码更加灵活和易于扩展。在这个不断发展的技术世界中,了解并掌握设计模式对于软件开发人员来说是至关重要的。模板方法模式是一种广泛应用于各种软件系统中的行为设计模式。它在算法的骨架上定义了一系列步骤,而具体的实现则留给子类来完成。通过这种方式,模板方法模式允许我们在不改变算法结构的情况下,灵活地重用和扩展代码。原创 2023-04-24 10:33:55 · 1467 阅读 · 2 评论 -
【设计模式】Java中的单例模式
本文旨在通过由浅入深的方式带大家深入的了解各种单例模式,接下来我会先简单介绍一下单例模式,给出相应单例类的代码,然后通过一些问题来介绍各个单例模式需要注意的地方,还会给出相应的测试代码。单例模式(Singleton Pattern)属于创建型设计模式,单例指的就是单实例,我们通常都是使用 new 来创建对象的,直接 new 的话创建出来的是不同的对象,如果我们想要确保一个类只能有一个对象,那么我们就可以采用单例模式的方式来获取对象。希望各位读者看完能有所收获,有任何问题都可以在评论区讨论。原创 2023-04-22 15:40:13 · 1843 阅读 · 0 评论 -
【设计模式】设计模式之解释器模式
本节给大家讲一下设计模式中的解释器模式,并结合实际业务场景给大家讲解如何使用~所有案例代码主要以Java语言为主, 好了, 废话不多说直接开整~解释器模式其实并不难,大家在学习的时候一定要在理解的基础上去写代码,不要去背代码。原创 2023-04-21 15:14:12 · 771 阅读 · 0 评论 -
【设计模式】设计模式之迭代器模式
本节给大家讲一下设计模式中的迭代器模式,并结合实际业务场景给大家讲解如何使用~案例代码主要以Java语言为主, 好了, 废话不多说直接开整~原创 2023-04-21 10:35:37 · 272 阅读 · 0 评论 -
【设计模式】如何在业务开发中使用适配器模式?
将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。说人话:这个模式就是用来做适配的,它将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。比如现实生活中的例子, 就像我们提到的万能充、数据线、MAC笔记本的转换头、出国旅游买个插座等等,他们都是为了适配各种不同的口 ,做的兼容。该角色定义把其他类转换为何种接口, 也就是我们的期望接口, 例子中的IUserInfo接口就是目标角色。原创 2023-04-12 07:28:20 · 1362 阅读 · 0 评论 -
【设计模式】Java 的三种代理模式
代理(Proxy)模式是一种结构型设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需要修改,可以通过代理的方式来扩展该方法。:真实类,也就是被代理类、委托类。用来真正完成业务服务功能;Proxy:代理类,将自身的请求用 Real Subject 对应的功能来实现,代理类对象并不真正的去实现其业务功能;Subject。原创 2023-04-19 13:58:18 · 1863 阅读 · 0 评论 -
【设计原则】依赖倒置原则--高层代码和底层代码到底谁该依赖谁?
依赖这个词,程序员们都好理解,意思就是,我这段代码用到了谁,我就依赖了谁。依赖容易有,但能不能把依赖弄对,就需要动点脑子了。如果依赖关系没有处理好,就会导致一个小改动影响一大片,而把依赖方向搞反,就是最典型的错误。那什么叫依赖方向搞反呢?依赖倒置原则。如果说实现开闭原则的关键事抽象化,是面向对象设计的目标的话,依赖倒置原则就是这个面向对象设计的主要机制。原创 2023-04-19 10:58:46 · 991 阅读 · 0 评论 -
【设计模式】深入浅出--外观模式
不知道大家有没有比较过自己泡茶和去茶馆喝茶的区别,如果是自己泡茶需要自行准备茶叶、茶具和开水,而去茶馆喝茶,最简单的方式就是跟茶馆服务员说想要一杯什么样的茶,是铁观音、碧螺春还是西湖龙井?正因为茶馆有服务员,顾客无须直接和茶叶、茶具、开水等交互,整个泡茶过程由服务员来完成,顾客只需与服务员交互即可,整个过程非常简单省事。以上这种场景类似设计模式中的外观模式,也叫做门面模式。原创 2023-04-19 09:59:12 · 755 阅读 · 0 评论 -
【设计模式】从Mybatis源码中学习到的10种设计模式
为什么学设计模式、看框架源码、补技术知识,就一个普通的业务项目,会造飞机不也是天天写CRUD吗?你说的没错,但你天天写CRUD,你觉得烦不?慌不?是不是既担心自己没有得到技术成长,也害怕将来没法用这些都是CRUD的项目去参加述职、晋升、答辩,甚至可能要被迫面试时,自己手里一点干货也没有的情况。所以,当然要扩充自己的知识储备,否则架构,架构思维不懂、设计,设计模式不会、源码、源码学习不深,最后就用一堆CRUD写简历吗?原创 2023-04-17 21:11:21 · 1368 阅读 · 0 评论 -
【设计模式】实际场景解释策略模式与工厂模式的应用
策略模式和工厂模式是常见的设计模式,它们可以帮助我们更好地组织和管理代码,提高代码的可维护性和可扩展性。在本篇博客中,我将使用Java和SpringBoot作为示例,详细讲解策略模式和工厂模式的概念、场景和示例,并且帮助读者更好地理解它们的异同。谈谈我们工作中的23个设计模式策略模式和工厂模式都是常见的设计模式,它们在解耦对象的创建和使用方面有很好的效果。策略模式可以使算法的实现互相替换,从而提高系统的灵活性和可维护性;工厂模式可以将对象的创建和具体实现分离,从而提高代码的可维护性和可扩展性。原创 2023-04-14 15:59:01 · 797 阅读 · 0 评论 -
【设计模式】实战聊聊工作中使用了哪些设计模式
平时我们写代码呢,多数情况都是流水线式写代码,基本就可以实现业务逻辑了。如何在写代码中找到乐趣呢,我觉得,最好的方式就是:使用设计模式优化自己的业务代码。今天跟大家聊聊日常工作中,我都使用过哪些设计模式。策略模式定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的的客户。这个策略模式的定义是不是有点抽象呢?那我们来看点通俗易懂的比喻:假设你跟不同性格类型的小姐姐约会,要用不同的策略,有的请电影比较好,有的则去吃小吃效果不错,有的去逛街买买买最合适。原创 2023-03-18 03:00:00 · 288 阅读 · 0 评论 -
【设计模式】Spring 中使用了哪些设计模式?
好了,话不多说,开始今天的内容。spring中常用的设计模式达到九种,我们举例说明。1、简单工厂模式又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。如下配置,就是在 HelloItxxz 类中创建一个原创 2021-08-18 20:48:45 · 1831 阅读 · 0 评论 -
提升代码质量的方法:领域模型、设计原则、设计模式
一 影响代码差的根因1 差代码的体现我们可以列举出非常多质量差的代码的表现现象,如名字不知所意、超大类、超大方法、重复代码、代码难懂、代码修改困难……其中最为影响代码质量的两个表现是命名名不副实、逻辑可扩展性差,当一个新人阅读代码时,有时发现方法命名与实际逻辑对不上,这就让人感到非常疑惑,这种现象在平时工作并不少见;另一个就是逻辑扩展性差,一个新业务需求提出来后,发现要在多处改动,需要回归的业务逻辑比较多,造成研发效率不高。2 问题归纳对第1节中提到的现象进行问题归纳整理,大致整理出6类问题,分别展原创 2022-10-26 11:31:37 · 118 阅读 · 0 评论 -
设计模式-策略模式
策略模式在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。介绍意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。如何原创 2021-05-10 21:14:14 · 103 阅读 · 0 评论