设计模式
用UML图和大白话说清楚设计模式
Java识堂
这个作者很懒,什么都没留下…
展开
-
面试官:写一下单例模式吧,知道单例模式有几种写法吗?
前言 有一些对象其实我们只需要一个,比方说:线程池,缓存,对话框,处理偏好设置和注册表的对象,日志对象,充当打印机,显卡等设备的驱动程序的对象。事实上,这类对象只能有一个实例,如果制造出多个实例,就会导致许多问题产生,例如:程序的行为异常,资源使用过量,或者是不一致的结果 单例模式确保一个类只有一个实例,并提供一个全局访问点,实现单例模式的方法是私有化构造函数,通过getInstance()方法实例化对象,并返回这个实例 实现 按照上面的想法,我们有了第一个实现 第一种(懒汉) // code1 pu.原创 2018-06-16 18:17:57 · 1255 阅读 · 0 评论 -
史上最简单的策略模式的实现
介绍 我之前写过写过一篇策略模式的实现 项目中的if else太多了,该怎么重构? 用了注解+ApplicationListener来将映射关系保存在map中,有没有更简洁的方式呢?当然有!但是需要借助spring 策略模式本质上就是一个接口+多个实现类,根据不同的条件选择不同的实现类 策略接口 public interface MsgService { void handleMessage(); } @Service public class ImageMsgService implement原创 2020-08-08 13:44:05 · 1451 阅读 · 0 评论 -
代理模式的应用
静态代理 很多小伙伴去大城市打拼。来大城市第一件事就是租房,免不了和中介打交道,因为很多房东很忙,你根本找不到他。从这个场景中就可以抽象出来代理模式 ISubject:被访问者资源的抽象 SubjectImpl:被访问者具体实现类(房东) SubjectProxy:被访问者的代理实现类(中介) UML图如下 举个例子来理解一下这个设计模式 老板让记录一下用户服务的响应时间,用代理模式来实现这个功能。 public interface IUserService { public void reque原创 2018-06-19 23:53:53 · 667 阅读 · 0 评论 -
面试官:Servlet Filter和Spring MVC Interceptor有哪些区别?
介绍 做Web开发,我们经常要和Servlet Filter,Spring MVC Interceptor打交道,它们都能对请求进行拦截,那么它们有哪些区别呢? Servlet Filter Filter的使用 可能很多小伙伴没怎么用过Filter,我就简单演示一下 1.在web.xml中配置2个Filter <filter-mapping> <filter-name>logFilter</filter-name> <url-pattern>.原创 2020-04-18 20:13:33 · 949 阅读 · 0 评论 -
享元模式在Integer,String类中的应用,秒懂各种对象相等操作
介绍 为什么要有常量池? 常量池是为了避免频繁的创建和销毁对象而影响系统性能,其实现了对象的共享。 例如字符串常量池,在编译阶段就把所有的字符串文字放到一个常量池中。 (1)节省内存空间:常量池中所有相同的字符串常量被合并,只占用一个空间。 (2)节省运行时间:比较字符串时,== 比equals()快。对于两个引用变量,只用==判断引用是否相等,也就可以判断实际值是否相等。 基本数据类型的包装类和...原创 2019-01-27 23:07:17 · 1550 阅读 · 3 评论 -
各种设计模式在开源框架中的应用
适配器 Mybatis和Dubbo的日志模块 装饰器 Java原生API中的IO模块,Mybatis的执行器原创 2018-12-01 17:59:17 · 997 阅读 · 0 评论 -
如何用好建造者模式
介绍 前段时间写了个项目,一个类的属性那叫一个多啊。刚开始直接写一堆set代码,后来set代码实在是太多了,真心看不下去了,用建造者模式重构了一下,嗯,看起来舒服多了。基本上很多框架中都用到了建造者模式,每个Java程序员也肯定用过建造者模式,只不过你没有意识到这就是建造者模式。 就像你用Collections.sort(List,Comparator)和Arrays.sort(Object[]...原创 2019-08-11 22:49:01 · 1369 阅读 · 0 评论 -
工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)详解
静态工厂模式 以学习为例,假如你想学习Java视频,你得自己到处去找资料,找资料是一个繁琐的过程,过一段时间你又想学Python视频了,你还得去找资料。现在你在学校上学,你想学Java视频了,你跟老师说,我想学Java视频了,老师就给了你一套Java视频,我想学Python视频了,老师就给了你一套Python视频,是不是感觉很方便,静态工厂模式就是将创建具体类的过程交给工厂类来实现 public ...原创 2018-09-27 11:00:41 · 1592 阅读 · 0 评论 -
五分钟学会观察者模式
介绍 观察者模式:多个观察者同时监听一个主题对象,当主题对象发生改变时,它的所有观察者都会收到通知。 例如微信公众号,当作者发文时,所有的订阅者都会收到。这样观察者模式就能实现广播同行,同时符合开闭原则,增加新的观察者不用改原有的代码。 观察者模式的UML图如下 Subject(主题):定义了观察者集合,提供相应方法注册,删除,通知观察者 ConcreteSubject(具体主题) Observ...原创 2020-03-08 23:24:13 · 893 阅读 · 1 评论