![](https://img-blog.csdnimg.cn/f046d034963043ebb09c044576462fd7.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
java设计模式
文章平均质量分 93
好看的代码前篇一律,恶心的程序升职加薪。设计模式是解决问题的方案,学习现有的设计模式可以做到经验复用。
初念初恋
Java高级开发工程师,主要分享Java技术相关的东西,包括但不限于源码解析、面试宝典、日常问题排查、工作趣文等等。
展开
-
java设计模式之:装饰器模式
装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为,在现实生活中,这种情况也到处存在,例如一张照片,我们可以不改变照片本身,给它增加一个相框,使得它具有防潮的功能,而且用户可以根据需要给它增加不同类型的相框,甚至可以在一个小相框的外面再套一个大相框。装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。在装饰模式中引入了装饰类,在装饰类中既可以调用待装饰的原有类的方法,还可以增加新的方法,以扩充原有类的功能。原创 2023-06-12 09:25:02 · 1356 阅读 · 0 评论 -
java设计模式之:访问者模式
访问者模式(Visitor Pattern):提供一个作用于某对象结构中的各元素的操作表示,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式是一种对象行为型模式。访问者模式是一种较为复杂的行为型设计模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操作。例如处方单中的各种药品信息就是被访问的元素,而划价人员和药房工作人员就是访问者。原创 2023-06-13 15:44:00 · 1150 阅读 · 0 评论 -
java设计模式之:外观模式
外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。外观模式结构图:(1) Facade(外观角色):在客户端可以调用它的方法,在外观角色中可以知道相关的(一个或者多个)子系统的功能和责任;在正常情况下,它将所有从客户端发来的请求委派到相应的子系统去,传递给相应的子系统对象处理。原创 2023-06-13 22:15:35 · 916 阅读 · 0 评论 -
java设计模式之:代理模式
代理(Proxy)模式是一种结构型设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象。这样做的好处是可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。原创 2023-06-11 21:35:47 · 919 阅读 · 0 评论 -
java设计模式之:组合模式
组合模式(Composite Pattern):将对象组合成树形结构以表示“部分-整体”的层次结构, 使得用户对单个对象和组合对象的使用具有一致性。原创 2023-06-13 08:30:19 · 900 阅读 · 0 评论 -
java设计模式之:桥接模式
同类的业务、同样的功能,怎么就你能写出来那么多if else。很多时候你写出来的if else都是没有考虑使用设计模式优化,今天介绍一下设计模式中的桥接模式。原创 2023-06-08 20:58:28 · 195 阅读 · 0 评论 -
java设计模式之:策略模式
策略模式是一种行为型模式,它将对象和行为分开,将行为定义为一个行为接口和具体行为的实现。策略模式最大的特点是行为的变化,行为之间可以相互替换。每个if判断都可以理解为就是一个策略。本模式使得算法可独立于使用它的用户而变化。简单理解就是,针对不同的场景,使用不同的策略进行处理。通过策略设计模式的使用可以把我们方法中的 if 语句优化掉,大量的 if 语句使用会让代码难以扩展,也不好维护,同时在后期遇到各种问题也很难维护。在使用这样的设计模式后可以很好的满足隔离性与和扩展性,对于不断新增的需求也非常方便承接。原创 2023-06-08 08:22:48 · 710 阅读 · 0 评论 -
java设计模式之:适配器模式
适配器模式(Adapter Pattern):将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。原创 2023-06-07 13:51:40 · 1054 阅读 · 0 评论 -
java设计模式之:原型模式
原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。原型模式的工作原理很简单:将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝自己来实现创建过程。由于在软件系统中我们经常会遇到需要创建多个相同或者相似对象的情况,因此原型模式在真实开发中的使用频率还是非常高的。原创 2023-06-06 22:37:05 · 684 阅读 · 0 评论 -
java设计模式之:建造者模式
建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需建造者的类型即可。它关注如何一步一步创建一个的复杂对象,不同的具体建造者定义了不同的创建过程,且具体建造者相互独立,增加新的建造者非常方便,无须修改已有代码,系统具有较好的扩展性。建造者模式结构图:Builder(抽象建造者):它为创建一个产品Product对象的各个部件指定抽象接口,在该接口中一般声明两类方法,一类方法是。原创 2023-06-06 22:27:01 · 610 阅读 · 0 评论 -
java设计模式之:工厂模式详解(简单工厂+工厂方法+抽象工厂)
在面向对象编程中,创建对象实例最常用的方式就是通过 new 操作符构造一个对象实例,但在某些情况下,new 操作符直接生成对象会存在一些问题。举例来说,对象的创建需要一系列的步骤:可能需要计算或取得对象的初始位置、选择生成哪个子对象实例、或在生成之前必须先生成一些辅助对象。在这些情况,新对象的建立就是一个 “过程”,而不仅仅是一个操作,就像一部大机器中的一个齿轮传动。针对上面这种情况,我们如何轻松方便地构造对象实例,而不必关心构造对象示例的细节和复杂过程?解决方案就是使用一个工厂类来创建对象。原创 2023-06-06 18:37:03 · 1325 阅读 · 0 评论 -
java设计模式之:单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式主要解决的是,一个全局使用的类频繁的创建和消费,从而提升整体的代码的性能。原创 2023-06-06 12:37:25 · 303 阅读 · 0 评论 -
依赖倒置原则:高层代码和底层代码,到底谁该依赖谁?
如果说实现开闭原则的关键事抽象化,是面向对象设计的目标的话,依赖倒置原则就是这个面向对象设计的主要机制。依赖倒置原则的目的是通过要面向接口的编程来降低类间的耦合性,所以我们在实际编程中只要遵循以下4点,就能在项目中满足这个规则:每个类尽量提供接口或抽象类,或者两者都具备。变量的声明类型尽量是接口或者是抽象类。任何类都不应该从具体类派生。使用继承时尽量遵循里氏替换原则。原创 2023-06-01 08:28:06 · 390 阅读 · 0 评论 -
接口隔离原则:接口里的方法,你都用得到吗?
在前面几篇文章中,我们讲的设计原则基本上都是关于如何设计一个类。SRP 告诉我们,一个类的变化来源应该是单一的;OCP 说,不要随意修改一个类;LSP 则教导我们应该设计好类的继承关系。而在面向对象的设计中,接口设计也是一个非常重要的组成部分。我们一直都在强调面向接口编程,想实现 OCP 也好,或者是下一讲要讲的 DIP 也罢,都是要依赖于接口实现的。也许你会说,接口不就是一个语法吗?把需要的方法都放到接口里面,接口不就出来了吗?顶多是 Java 用 interface,C++ 都声明成纯虚函数。原创 2023-05-31 21:30:41 · 293 阅读 · 0 评论 -
Liskov替换原则:用了继承,子类就设计对了吗?
Liskov 替换原则,其主要意思是说子类型必须能够替换其父类型。理解 LSP,我们需要站在父类的角度去看,而站在子类的角度,常常是破坏 LSP 的做法,一个值得警惕的现象是,代码中出现 RTTI 相关的代码。继承需要满足 IS-A 的关系,但 IS-A 的关键在于行为上的一致性,而不能单纯凭日常的概念或直觉去理解。LSP 不仅仅可以用在类关系的设计上,我们还可以把它用在更广泛的接口设计中。任何接口都是宝贵的,在设计时,都要精心考量。LSP 的根基在于继承,但显然接口继承才是重点。原创 2023-05-30 19:25:11 · 1261 阅读 · 0 评论 -
设计模式原则之:开放封闭原则
这一讲,我们来看下一个设计原则:开放封闭原则。作为一名程序员,来了一个需求就要改一次代码,这种方式我们已经见怪不怪了,甚至已经变成了一种下意识的反应。修改也很容易,只要我们按照之前的惯例如法炮制就好了。这是一种不费脑子的做法,却伴随着长期的伤害。每人每次都只改了一点点,但是,经过长期积累,再来一个新的需求,改动量就要很大了。而在这个过程中,每个人都很无辜,因为每个人都只是遵照惯例在修改。但结果是,所有人都受到了伤害,代码越来越难以维护。既然“修改”会带来这么多问题,那我们可以不修改吗?原创 2023-05-30 09:24:40 · 623 阅读 · 0 评论 -
设计模式原则之:单一职责原则SRP
在面向对象的软件设计中,只有尽量降低各个模块之间的耦合度,才能提高代码的复用率,系统的可维护性、可扩展性才能提高。面向对象的软件设计中,有23种经典的设计模式,是一套前人代码设计经验的总结,如果把设计模式比作武功招式,那么设计原则就好比是内功心法。常用的设计原则有七个,本文将具体介绍单一职责原则。单一职责原则:专注降低类的复杂度,实现类要职责单一;开放关闭原则:所有面向对象原则的核心,设计要对扩展开发,对修改关闭;里式替换原则:实现开放关闭原则的重要方式之一,设计不要破坏继承关系;原创 2023-05-29 21:29:18 · 633 阅读 · 0 评论