
Java设计模式
文章平均质量分 85
訾博ZiBo
慢慢学,不要停。
展开
-
基于 Java 列举和说明常用的外部化配置的实现方式?
这样可以在不同环境(开发、测试、生产)间部署应用时,直接通过命令行传参,然后在Java程序中解析这些参数。来管理所有环境的配置,应用程序在启动时。在Java应用程序中,外部化配置是。的文件来存储配置信息,并使用相应的。中,启动时由应用程序读取。参数定义系统属性,并且可以通过。提供了强大的支持,可以使用。文件来存储配置,然后通过。来加载不同来源的配置。在Java中访问它们。原创 2023-11-14 21:35:05 · 202 阅读 · 0 评论 -
基于 Java 解释一下硬编码和非硬编码?
属性值,而无需更改和重新编译Java代码。这大大提高了应用程序的灵活性,使得维护和配置更新更加简单。例如,如果你在代码中直接指定了数据库的连接字符串,那么当你需要更换数据库服务器时,就。硬编码和非硬编码是指软件开发中配置数据和变量处理方式的概念。在上述非硬编码的示例中,如果数据库URL发生变化,只需修改。硬编码是指在程序代码中直接写入具体的。等方式来设置和获取程序中使用的。这样做的好处是,修改配置时。原创 2023-11-14 21:20:18 · 722 阅读 · 0 评论 -
基于Java解释一下强依赖和弱依赖?
这种解耦使得系统各部分可以独立变化和进化,同时也促进了代码的可测试性,因为可以使用模拟对象(mock objects)来替换实际的依赖。通常情况下,软件架构师会推荐尽可能使用弱依赖以保持系统的灵活性和可维护性。原创 2023-11-14 21:11:56 · 662 阅读 · 0 评论 -
关于使用 Java 反射技术来实现解耦?
Hibernate 和 Spring 等框架也广泛使用了反射机制以提供灵活性和解耦。例如,Spring 框架可以通过配置(XML 或注解)来动态地创建和装配对象,而底层实现则是利用了 Java 的反射技术。加载、探索和使用类和对象。通过反射,我们可以在程序运行期间。然而,需要注意的是反射通常比直接的 Java 方法调用要。在这个例子中,我们使用反射来动态加载和实例化一个。,确保它是解决特定问题的最佳工具。,并且使用不正确可能会导致代码。通过反射,我们可在配置中。因此,在使用反射时要。原创 2023-11-14 20:41:07 · 159 阅读 · 0 评论 -
Java开发中解决紧耦合的方法有哪些?
通常最佳实践是在项目开始阶段就考虑到软件的结构和模块划分,这样可以在后期节约大量的重构成本。在多层架构中,服务层充当业务逻辑和其他层(比如数据访问层和表示层)之间的。面向切面编程将**公共功能(比如日志或事务管理)**模块化为切面,使用上述方法时,我们应该根据具体的应用场景选择合适的策略,,这通常通过使用依赖注入框架(比如 Spring)来实现。例如,使用工厂模式创建对象,可以。应用接口可以降低类之间的依赖性,这样你可以很容易地引入新的。接口,而不是其具体实现。模块化是将系统分解为。组件通过消息队列进行。原创 2023-11-14 20:31:21 · 711 阅读 · 0 评论 -
设计模式中的静态工厂,到底解决了什么问题?
总而言之,静态工厂方法是一种非常有用的设计模式,它提供了一种。它可以让你的代码更加清晰、灵活和易于维护。原创 2023-11-14 20:07:30 · 404 阅读 · 0 评论 -
单一职责原则:一个类或模块应该只做一件事情
在划分类的职责时,适度地使用抽象和接口可以提供灵活性和可扩展性。通过定义适当的接口,可以降低类之间的耦合度,增强代码的可维护性和可扩展性。但要避免过度的抽象和接口定义,以免引入不必要的复杂性。(适度抽象,降低耦合)原创 2023-07-02 13:29:34 · 444 阅读 · 0 评论 -
【Java设计模式】019-策略模式 Pro
在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法。原创 2023-05-25 10:30:53 · 695 阅读 · 0 评论 -
【Java设计模式】028-解释器模式
目录二十四、解释器模式1、概述2、应用场景3、优缺点优点缺点4、名词解释文法句子语法树5、主要角色6、代码实现测试类运行结果7、扩展8、后记二十四、解释器模式定义一个语法规则,配置数据,以根据语法规则判断数据是否满足配置要求的结果为依据,来定义程序的执行逻辑;1、概述在软件开发中,会遇到有些问题多次重复出现,而且有一定的相似性和规律性。如果将它们归纳成一种简单的语言,那么这些问题实例将是该语言的一些句子,这样就可以用“编译原创 2021-06-03 08:57:45 · 158 阅读 · 2 评论 -
【Java设计模式】027-备忘录模式
目录二十三、备忘录模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现测试类运行结果6、扩展二十三、备忘录模式也就是对之前的操作做备份,在需要的时候将备份恢复过来罢了!1、概述每个人都有犯错误的时候,都希望有种“后悔药”能弥补自己的过失,让自己重新开始,但现实是残酷的。在计算机应用中,客户同样会常常犯错误,能否提供“后悔药”给他们呢?当然是可以的,而且是有必要的。这个功能由“备忘录模式”来实现。其实很多应用软件都提供了这项功原创 2021-05-31 20:31:42 · 124 阅读 · 0 评论 -
【Java设计模式】026-访问者模式
目录二十二、访问者模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现测试类运行结果6、扩展二十二、访问者模式这个模式确实有些复杂!1、概述在现实生活中,有些集合对象存在多种不同的元素,且每种元素也存在多种不同的访问者和处理方式。例如,公园中存在多个景点,也存在多个游客,不同的游客对同一个景点的评价可能不同;医院医生开的处方单中包含多种药元素,査看它的划价员和药房工作人员对它的处理方式也不同,划价员根据处方单上面的药品名和数量进原创 2021-05-31 20:30:27 · 166 阅读 · 0 评论 -
【Java设计模式】025-迭代器模式
目录二十一、迭代器模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现测试类运行结果6、扩展二十一、迭代器模式1、概述在现实生活以及程序设计中,经常要访问一个聚合对象中的各个元素,如“数据结构”中的链表遍历,通常的做法是将链表的创建和遍历都放在同一个类中,但这种方式不利于程序的扩展,如果要更换遍历方法就必须修改程序源代码,这违背了 “开闭原则”。既然将遍历方法封装在聚合类中不可取,那么聚合类中不提供遍历方法,将遍历方法由用户自己实现原创 2021-05-31 20:29:09 · 121 阅读 · 0 评论 -
【Java设计模式】024-中介者模式
目录二十、中介者模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现测试类运行结果6、扩展二十、中介者模式这里的中介者更像是桥梁,而不是代理模式的代理!1、概述在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是“网状结构”,它要求每个对象都必须知道它需要交互的对象。例如,每个人必须记住他(她)所有朋友的电话;而且,朋友中如果有人的电话修改了,他(她)必须让其他所有的朋友一起修改,这叫作“牵一发而动全身”,原创 2021-05-31 20:27:54 · 121 阅读 · 0 评论 -
【Java设计模式】023-观察者模式
目录十九、观察者模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现测试类运行结果6、再举一个例子测试类运行结果7、扩展Observable类Observer 接口代码演示运行结果十九、观察者模式1、概述在现实世界中,许多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如,某种商品的物价上涨时会导致部分商家高兴,而消费者伤心;还有,当我们开车到交叉路口时,遇到原创 2021-05-31 20:26:27 · 206 阅读 · 0 评论 -
【Java设计模式】022-状态模式
目录十八、状态模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现测试类运行结果6、一个不错的案例代码实现运行结果十八、状态模式1、概述在软件开发过程中,应用程序中的部分对象可能会根据不同的情况做出不同的行为,我们把这种对象称为有状态的对象,而把影响对象行为的一个或多个动态变化的属性称为状态。当有状态的对象与外部事件产生互动时,其内部状态就会发生改变,从而使其行为也发生改变。如人都有高兴和伤心的时候,不同的情绪有不同的行为,当然原创 2021-05-31 20:23:38 · 349 阅读 · 0 评论 -
【Java设计模式】021-责任链模式
目录十七、责任链模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现测试类运行结果十七、责任链模式大概意思:如果我处理不了交给下一个处理!在这个模式中,前面的角色没有处理就交给后面的角色处理,也就意味着只有一个角色对请求进行了处理,但是我想肯定也有一种流水线的处理方式,每一个环节都要对数据进行一些处理!1、概述在现实生活中,一个事件需要经过多个对象处理是很常见的场景。例如,采购审批流程、请假流程等。公司员工请假,可批假的领导有部原创 2021-05-31 20:20:19 · 139 阅读 · 2 评论 -
【Java设计模式】020-命令模式
目录十六、命令模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现测试类运行结果十六、命令模式流程:客户(使用者)——命令——调用者——接收者;大致逻辑:客户发出命令(比如说要餐厅点菜,点了个麻婆豆腐),这个命令会传给调用者(比如说服务员),调用者调用接收者(比如说厨师)的方法。 我发现这个模式是真的复杂!简单的事情为了降低耦合度,搞得很复杂!就相当于干一件事情要经几个人的手一样!当然这种“层层传递”也可以对方法调用的各个环节提供各种“服务原创 2021-05-31 20:19:17 · 115 阅读 · 0 评论 -
【Java设计模式】019-策略模式
目录十五、策略模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现测试类运行结果十五、策略模式1、概述在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法。在软件开发中也常常遇到类似的情况,当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能,如数据排序策略有冒泡排序、选择排原创 2021-05-31 20:18:14 · 108 阅读 · 0 评论 -
【Java设计模式】018-模板方法模式
目录十四、模板方法模式1、概述2、应用场景3、优缺点优点缺点4、主要角色抽象类/抽象模板(Abstract Class)具体子类/具体实现(Concrete Class)5、代码实现抽象类具体子类测试类十四、模板方法模式事情的流程是基本确定的,有一些步骤是固定的,由抽象父类实现,有一些步骤是变化的,由子类实现,在父类中定义好各个方法执行的顺序(事情的执行流程)1、概述在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知原创 2021-05-31 20:17:01 · 169 阅读 · 0 评论 -
【Java设计模式】017-组合模式
目录十三、组合模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现构件类测试类运行结果6、透明组合模式7、安全组合模式十三、组合模式案例其一:企业中,大部门嵌套小部门,部门的结构是一致的;大领导带领三个部长,每个部长又带领很多名员工,本质上大家都是员工,只是存在嵌套关系!树根——树干——树枝——树叶!备注:具体使用看是实际场景吧!各有各的利弊!1、概述在现实生活中,存在很多“部分-整体”的关系,例如,大学中的部门与学原创 2021-05-27 18:12:09 · 132 阅读 · 0 评论 -
【Java设计模式】016-享元模式
目录十二、享元模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现抽象享元角色:形状具体享元角色:圆享元工厂测试类6、运行结果7、享元模式扩展十二、享元模式1、概述享元模式是对对象的复用,以复用之前的对象取代对象的创建,那么这个对象必须是用完即扔的!也就是说用完可以销毁,但是后面来了个人说别扔了我改改还能用!在生活中就像吃饭的碗一样,不可能吃完饭碗就扔了,而是洗干净下次再用!还有就是我们对碗的需求是有时候需要一个大碗有时候需原创 2021-05-27 18:09:56 · 145 阅读 · 1 评论 -
【Java设计模式】015-外观模式
目录十一、外观模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现子系统1:狗子系统2:猫子系统3:母鸡外观角色测试类(客户)运行结果十一、外观模式这是非常简单的一个模式,子模块太多了,很麻烦!统一将他们的功能封装到一个类中!1、概述在现实生活中,常常存在办事较复杂的例子,如办房产证或注册一家公司,有时要同多个部门联系,这时要是有一个综合部门能解决一切手续问题就好了。软件设计也是这样,当一个系统的功能越来越强,子原创 2021-05-25 18:37:06 · 124 阅读 · 0 评论 -
【Java设计模式】014-装饰器模式
目录十、装饰器模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现抽象构件角色:孙悟空具体构件角色:猴子抽象装饰角色:Changer具体装饰角色:美女具体装饰角色:龙测试类运行结果十、装饰器模式作用:对原有功能向多个方向进行扩展,每一个扩展是一个具体的装饰角色,就像孙悟空七十二变一样,变化的每一个角色都是一个具体的装饰角色!类似代理模式的作用!既可以提供动态代理的“统一服务”,也可以提供静态代理的“个性化服务”,妙啊!原创 2021-05-25 18:34:54 · 189 阅读 · 2 评论 -
【Java设计模式】013-桥接模式
目录九、桥接模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现抽象化角色:包实现化角色:颜色扩展抽象化角色:大包扩展抽象化角色:小包实现化角色:红色实现化角色:黄色测试类运行结果6、扩展九、桥接模式作用:向两个或多个维度扩展的时候减少子类的数量!1、概述桥接模式,按照字面意思应该是搭桥接线的意思!桥接模式解决了怎样的问题:在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜原创 2021-05-25 18:31:53 · 144 阅读 · 0 评论 -
【Java设计模式】012-适配器模式
目录八、适配器模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、类适配器实现目标接口适配者适配器测试类运行结果6、对象适配器实现目标接口适配者适配器测试类运行结果7、接口适配器实现(缺省适配器)接口适配器功能类测试类运行结果8、双向适配器Number接口String接口双向适配器测试类运行结果9、感想八、适配器模式适配器大约跟转换器是一个意思了!也许是格式转换,也原创 2021-05-25 18:23:59 · 320 阅读 · 2 评论 -
【Java设计模式】011-代理模式
目录七、代理模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、静态代理实现公共出租接口房东类代理类测试类运行结果评价6、动态代理实现公共出租接口房东类计时器类动态代理类测试类运行结果评价七、代理模式1、概述第二次梳理:代理模式强调两点:静态代理适合提供个性化的服务,动态代理适合提供统一的服务!时间:2021年05月14日 10时07分01秒代理模式就是字面意思:代理、中介;现实生活中,有很多原创 2021-05-25 18:17:45 · 140 阅读 · 2 评论 -
【Java设计模式】010-建造者模式
目录六、建造者模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现产品类抽象建造者具体建造者指挥者测试类测试结果6、建造者模式和工厂模式的区别六、建造者模式1、概述第二次梳理:建造者模式中,产品是固定的,规定了产品的结构;抽象建造者是固定的,规定了建造的环节有哪些;具体建造者是不同的,不同的具体建造者建造出的结果是不同的;另外指挥者所指定的不同逻辑也会影响建造的最终结果!时间:2021年05月14日 10时04分47秒原创 2021-05-25 18:13:39 · 137 阅读 · 0 评论 -
【Java设计模式】009-抽象工厂模式
目录五、抽象工厂模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现功能类测试类运行结果6、模式的扩展7、举例解释状态变局1:新增一家华硕工厂变局2:戴尔、惠普、华硕想生产耳机五、抽象工厂模式1、概述简单讲:抽象工厂定义创建的多个产品,具体工厂负责创建,每个具体工厂负责一个品牌的产品的创建,使用者根据具体工厂和产品名称获得产品;抽象工厂(Abstract Factory)模式的定义:是一种为访问类提供一个创建一组相原创 2021-05-12 22:50:48 · 181 阅读 · 2 评论 -
【Java设计模式】008-工厂方法模式
目录四、工厂方法模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现功能类测试类运行结果四、工厂方法模式这个工厂方法模式跟我之前学抽象工厂模式恰好相反!1、概述简单讲:抽象工厂提供创建产品的接口,每一个具体工厂创建一种具体的产品,使用者根据具体工厂,得到具体产品;“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则;满足开闭原则:当新增一个产品的时候只需要原创 2021-05-12 22:48:53 · 147 阅读 · 1 评论 -
【Java设计模式】007-简单工厂模式
目录三、简单工厂模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现功能类测试类运行结果四、工厂方法模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、代码实现功能类测试类运行结果三、简单工厂模式1、概述简单讲:工厂负责创建对象,使用者不关心对象的创建过程;现实生活中,原始社会自给自足(没有工厂),农耕社会小作坊(简单工厂,民间酒坊),工业革命流水线(工厂方法,自产自销),现代产业链代原创 2021-05-12 22:47:12 · 135 阅读 · 0 评论 -
【Java设计模式】006-原型模式
目录二、原型模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、深克隆与浅克隆深克隆浅克隆6、通过Cloneable接口实现浅克隆实体类测试类运行结果二、原型模式1、概述用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。2、应用场景 对象之间相同或相似,即只是个别的几个属性不同的时候; 创建对.原创 2021-05-12 22:41:33 · 149 阅读 · 1 评论 -
【Java设计模式】005-单例模式
目录一、单例模式1、概述2、应用场景3、优缺点优点缺点4、主要角色5、饿汉式实现概述实体类测试类运行结果评价6、懒汉式实现概述实体类优化后的实体类测试类与运行结果评价7、静态内部类实现(推荐)概述实体类测试类和运行结果评价8、有限多例模式概述实体类测试类运行结果一、单例模式1、概述单例模式:指一个类只能有一个实例对象,且必须由该类自行创建;实现方式:饿汉式、懒汉式;2.原创 2021-05-12 22:40:02 · 176 阅读 · 0 评论 -
【Java设计模式】004-建造者模式
一、简介工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性;二、四个角色说明Product产品类:通常是实现了模板方法模式,也就是有模板方法和基本方法;Builder抽象建造者:规范产品的组建,一般是由子类实现;ConcreteBuilder具体建造者:实现抽象类定义的所有方法,并且返回一个...原创 2020-03-23 19:14:44 · 158 阅读 · 0 评论 -
【Java设计模式】003-工厂模式
一、概述1、分类工厂方法模式、抽象工厂模式;二、工厂方法模式1、分类工厂方法模式分为三种:①普通工厂模式:就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建;②多个工厂方法模式:是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象;③静态工厂方法模式:...原创 2020-03-23 18:20:52 · 180 阅读 · 0 评论 -
【Java设计模式】002-单例模式
一、概述1、简介所谓单例模式指的是一个类只允许产生一个实例化的对象;2、分类懒汉式、饱汉式;二、详解1、饿汉式简介:构造方法私有化,外部无法产生新的实例化对象,只能通过static方法取得实例化对象;代码示例:package com.zibo.design_mode.singleton;public class SingletonHunge...原创 2020-03-23 13:29:58 · 266 阅读 · 0 评论 -
【Java设计模式】001-代理模式
一、代理模式代理模式是Java常用的设计模式,其特征是代理类与委托类(被代理类)有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类、以及事后处理消息等。代理类和委托类之间会存在关联关系,代理类的对象本身并不真正实现服务,而是通过调用代理类对象特定的方法来提供服务。简单的说,我们访问实际对象的通过代理对象来访问的,代理模式在访问对象时引入一定程度的间接性,就是因为这种间...原创 2020-03-22 11:56:23 · 283 阅读 · 0 评论