![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 72
坤少_jkson
别再用廉价的勤奋掩饰你的懒惰
展开
-
访问者模式一篇就够了
访问者模式介绍最复杂的设计模式,并且使用频率不高,《设计模式》的作者评价为:大多情况下,你不需要使用访问者模式,但是一旦需要使用它时,那就真的需要使用了。访问者模式是一种将数据操作和数据结构分离的设计模式。(觉得太抽象,可以看下面的例子)。访问者模式的使用场景对象结构比较稳定,但经常需要在此对象结构上定义新的操作。 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免这些操作“污染”这些对象的类,也不希望在增加新操作时修改这些类。访问者模式的UML类图访问者模式.转载 2021-03-10 23:13:03 · 134 阅读 · 0 评论 -
JAVA设计模式之装饰器模式
1.概念: 以对客户透明的方式来扩展对象的功能,用户根据功能需求随意选取组成对象的成分进行动态地将责任附加到对象上,通过方法的链式调用来实现装饰者提供了比继承更有弹性的替代方案,应遵循开闭原则(类应该对扩展开发,对修改关闭) 简单来讲就是动态的给一个对象增加一些职能,相对与生成子类更加灵活2.应用以及说明:1装饰模式增加强了单个对象的能力。Java IO到处都使用了装饰模式,经典的例子就是Buffered系列类如BufferedReader和BufferedWriter,它们增强了Read..原创 2021-01-23 11:52:43 · 171 阅读 · 0 评论 -
观察者模式实现之EventBus(Google)
观察者模式又叫发布-订阅(publish/subscribe)模式,定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更新自己,我们第一时间可能会想到消息队列,但如果在同一个JVM进程中要实现这种观察者模式该怎么去做?我们可能会想到JDK内置的java.util.Observer,或者自己写代码,其实Google提供的guava工具包也有类似的实现,这就是EventBus,wiki地址为https://githu...原创 2020-08-07 00:15:07 · 337 阅读 · 0 评论 -
Java Builder和静态工厂方法用法总结(Effective java)
我们在创建类的时候正常的就是定义几个属性,然后提供get,set方法,再加几个构造函数,如果对象的构造函数有多个,可能在实例化的时候会出问题,代码也不够优雅,这是我们通常会用lombok的注解,比如@Builder,@Data,@NoArgsConstructor,@AllArgsConstructor等等,如果我们不用注解的话,也可以自己写,下面的写法也是Effective java书中的推荐的写法,希望在以后写代码的过程中多借鉴这种优雅的写法和思路,示例如下public clas...原创 2020-08-06 00:02:03 · 483 阅读 · 0 评论 -
享元模式在程序中的应用
享元模式的概念:如果在一个系统中存在多个相同的对象,那么只需要共享一份对象的拷贝,而不必为每一次使用都创建新的对象。说白了就是减少创建对象的数量,以减少内存占用和从而提高系统性能。我举个简单的场景,我们根据异常code码定义了几个异常,程序在处理过程中抛出这些异常,正常来讲,我们通过new一个RuntimeException就好了,但是如果程序的调用量比较大的时候频繁的new一些临时对象,会引起GC,影响系统稳定,我们可以考虑把这几个对象缓存起来,这样就可以不用频繁创建对象,其实这就是一种池技...原创 2020-07-15 00:01:06 · 217 阅读 · 0 评论 -
设计模式笔记之观察者
1. 概述 有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。2. 解决的问题 将一个系统分割成一个一些类相互协作的类有一个不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便。观察原创 2016-12-10 12:08:14 · 237 阅读 · 0 评论 -
JAVA设计模式之代理模式
转自http://blog.csdn.net/jason0539/article/details/22974405【代理模式应用场景举例】比如在玩“极品飞车”这款游戏,如果游戏者手中的金钱达到了一定的数量就可以到车店买一部性能更高的赛车,那么这个卖车的“车店”就是一个典型的“汽车厂家”的“代理”,他为汽车厂家“提供卖车的服务”给有需求的人士。从面向对象的方面考虑,“销售汽车的代理”也是转载 2017-02-20 21:54:43 · 296 阅读 · 0 评论 -
Java设计模式之责任链模式、职责链模式
转自http://blog.csdn.net/jason0539/article/details/45091639本文继续介绍23种设计模式系列之职责链模式。什么是链1、链是一系列节点的集合。2.、链的各节点可灵活拆分再重组。职责链模式使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该转载 2017-02-20 22:04:12 · 364 阅读 · 0 评论 -
20 个设计模式和软件设计面试问题(转)
不管是参加Java面试还是C#面试,设计模式和软件设计都是任何编程面试中的必问问题。实际上,编程能力和设计技巧是对彼此很好的补充。一个好的程序员通常都是一个好的软件设计人员。他们知道怎么把一个问题分割成一段段代码或者软件设计,但这些能力和技巧并不能凭空而来。你需要持续做大型、小型系统的设计和编码,并且不断从错误中学习。从面向对象设计原则 开始是一个不错的选择。好吧,这篇文章是关于一些在各种面试中频...转载 2018-05-20 15:35:51 · 1351 阅读 · 0 评论