
设计模式
Linging_24
好记性不如烂笔头。
展开
-
策略模式结合Spring使用
【代码】策略模式结合Spring使用。原创 2024-05-30 23:21:24 · 502 阅读 · 0 评论 -
责任链模式学习
使用场景:1、有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定。2、在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。4、代码中需要进行很多校验时,存很多if判断,这时可以进行责任链处理,去除if,并进行校验。4、增加新的请求处理类很方便。责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。2、系统性能将受到一定影响,而且在进行代码调试时不太方便,可能会造成循环调用。原创 2022-10-07 14:34:41 · 235 阅读 · 0 评论 -
设计模式
设计模式原创 2022-08-28 09:43:12 · 184 阅读 · 0 评论 -
组合模式学习
在 JAVA AWT 和 SWING 中,对于 Button 和 Checkbox 是树叶,Container 是树枝。算术表达式包括操作数、操作符和另一个操作数,其中,另一个操作符也可以是操作树、操作符和另一个操作数。转载 2022-08-28 09:40:58 · 117 阅读 · 0 评论 -
建造者模式
https://blog.youkuaiyun.com/shuyv/article/details/123367590转载 2022-08-27 17:54:46 · 138 阅读 · 0 评论 -
使用策略模式 + Function优化if-else
由于Function接口的入参只支持一个参数,所以自定义一个MyFunction,支持多个参数,接口如下: @FunctionalInterface public interface MyFunction<T, R> { R apply(T... t); } 下面就是如何使用了: @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) public class MyFunctionTest {原创 2022-03-06 09:17:55 · 607 阅读 · 1 评论 -
观察者模式学习
观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。 其UML图如下: 下面以在工作中同事摸鱼,当老板回来时,前台通知同事停止摸鱼,继续工作为例子来说明观察者模式。 涉及的角色: 抽象通知者 具体通知者(主题) 抽象观察者 具体观察者(订阅者) 抽象通知者: /** * 主体类或者抽象通知者 * @author Linging * @ve原创 2022-01-03 09:52:30 · 365 阅读 · 0 评论 -
适配器模式学习
适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。 类适配器模式可采用多重继承方式实现,如 C++ 可定义一个适配器类来同时继承当前系统的业务接口和现有组件库中已经存在的组件接口;Java 不支持多继承,但可以定义一个适配器类来实现当前系统的业务接口,同时又继承现有组件库中已原创 2021-12-26 16:03:19 · 556 阅读 · 0 评论 -
模板方法学习
模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。UML结构图如下: 下面以考试试卷,不同学生选择不同答案来进行举例: 参与角色: 抽象类 具体方法(即重复的方法) 抽象空方法(子类自己实现的方法,子类实现的方法是个性化的) 抽象类: /** * 抽象测试试卷:将子类重复的代码抽取在此,并且把子类中不同的部分抽象成方法,由子类去实现 * @autho原创 2021-12-25 10:42:06 · 181 阅读 · 0 评论 -
装饰模式学习
装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活。UML结构图如下: 下面以喝咖啡,可以往咖啡中加糖、加茶、加牛奶来进行举例: 参与角色: 抽象接口 具体对象,即可以进行装饰的具体对象 抽象装饰类 具体装饰类 抽象接口 /** * 咖啡 抽象接口 * @author Linging * @version 1.0.0 * @since 1.0 */ public abstract class CoffeeComponent {原创 2021-12-21 22:48:23 · 306 阅读 · 0 评论 -
策略模式学习
策略模式属于对象的行为模式,其用意是针对某一组算法,将每一个算法封装到具有公共接口的独立实现类中,从而使它们可以相互替代,并可在不影响客户端的情况下发生变化。 下面以超时收银时,有多种收费策略来对策略模式进行举例: 参与角色: 抽象策略 具体策略 配置策略 抽象策略: /** * 抽象收费策略 * @author Linging * @version 1.0.0 * @since 1.0 */ public abstract class CashSuper { /** *原创 2021-12-20 22:23:05 · 370 阅读 · 0 评论 -
工厂模式
1、简单工厂 简单工厂就是工厂提供一个统一的产品接口,根据传入的参数,由工厂决定要创建什么类型的产品对象,隐藏创建对象的内部细节。 好处就是解耦,使得代码不直接依赖于具体的实现类; 缺点就是违反开闭原则,每新增一个产品类,都需要修改我们的工厂。 抽象产品: /** * 抽象产品--水果 */ public interface Fruit { //获取产品名称--水果名称 String name(); } 产品的具体实现: /** * 产品具体实现---苹果 */ public c原创 2020-11-30 15:32:27 · 338 阅读 · 0 评论 -
单例模式
概念: 单例模式重点在于在整个系统中共享一些创建时需要耗费较多资源的对象,在整个系统应用中只存在一个对象,被其他组件共享。 单例创建的步骤: 编写一个类 构造方法私有 编写一个方法用于获取唯一实例 优点: 在内存中只有一个实例,减少内存的开销,尤其是需要频繁创建和销毁的对象 减少资源的多重占用(比如写文件操作) 缺点: 没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。 使用场景: 当你想控制类的实例,节省系统资源的时候。 要求生产唯一序列号。原创 2020-11-15 21:23:38 · 197 阅读 · 0 评论 -
面向对象七大原则
开闭原则 接口隔离原则 单一职责原则 合成复用原则 依赖倒置原则 里氏替换原则 迪米特法则 解释:https://blog.youkuaiyun.com/qq_41331645/article/details/81102015原创 2020-11-15 20:19:47 · 164 阅读 · 0 评论 -
JDK动态代理&CGLIB动态代理
动态代理 动态代理的意义在于生成一个代理对象来代理真实对象,从而控制真实对象的访问。 先来谈谈什么是代理模式。假设这样一个场景,你的公司是一家软件公司,你是一位软件工程师。客户带着需求去找公司显然不会直接和你谈,而是去找商务谈,此时客户会认为商务就代表公司。让我们用一张图来表示代理模式的含义,如图所示。 &nbs...原创 2020-01-19 11:10:06 · 290 阅读 · 0 评论