
设计模式
星尘Pro
每个人心中都有一团火,而路过的人只看到了烟。
展开
-
面试必问的设计模式 | 装饰者模式
一、简介装饰者模式(Decorator Pattern)是一种结构型模式,原理是创建了一个装饰类,用来包装原有的类,并在保持类方法完整性的前提下,提供了额外的功能。二、示例基于装饰者模式实现一级,二级缓存,首先创建缓存接口,声明方法public interface ICache { public Object getCache(String key); }创建一级缓存p...原创 2020-04-14 21:18:22 · 577 阅读 · 1 评论 -
面试必问的设计模式 | 观察者模式
一、简介观察者模式(Observer Pattern) 是一种 行为型 模式,观察者模式定义了对象之间一对多依赖,让多个观察者对象同时监听主体对象,当主体对象发生变化,所有观察都会收到通知并更新,也叫发布订阅模式。二、实例下面我们使用观察者模式,模拟一个用户下单,就可以收到短信和邮件通知的功能,JDK 默认自带了观察者的实现功能,我们只需要实现 util 下的 Observer 和 Obse...原创 2020-03-18 22:40:09 · 705 阅读 · 1 评论 -
面试必问的设计模式 | 代理模式
一、简介代理模式 (Proxy Pattern) 是一种结构型模式 模式,一个类能代理另一个类做一些事情,相当于一个中介 。代理模式分为两种,一种是静态代理,一种是动态代理,他们的区别在于静态代理是程序在运行前就已经存在代理类的字节码文件,代理类和原始类在运行前就已经确定。 动态代理 是在程序运行期间,通过JVM反射机制或者操作字节码方式动态生成代理类。代理类和委托类的关系是运行时在确定的。下...原创 2020-03-17 23:28:38 · 511 阅读 · 0 评论 -
面试必问的设计模式 | 模板方法模式
一、简介模板方法模式 (Template Pattern) 是一种 行为型模式,基本思路是抽象类定义算法基本骨架,相同行为定义在抽象方法中,不同行为实现部分交给子类完成。二、示例这里我们使用模板方法模式模拟一个支付功能,进行支付宝和微信支付,我们先定义一个支付功能的抽象类,这里提供了 4 个方法,callBack 封装处理流程的方法,verifyToken,payResult 这两个方法分别...原创 2020-03-16 22:40:58 · 465 阅读 · 0 评论 -
面试必问的设计模式 | 状态模式
一、简介状态模式 (State Pattern) 中,类的行为是基于它的状态改变的。属于 行为型模式。在状态模式中,需要创建 表示各种状态的对象 以及他们的 共同抽象接口 和一个行为随着状态对象改变而改变的 context 对象。二、实例我们以下面一段代码使用状态模式进行重构,这是一个多重 IF 判断,当然在实际项目中,具体流程会更复杂,如果使用 if,将会产生大量的代码。public ...原创 2020-03-16 00:48:54 · 398 阅读 · 0 评论 -
面试必问的设计模式 | 外观模式
一、简介外观模式 (Facade Pattern) 也称作 门面模式,包装模式,是一种 结构型 模式,其特点是把复杂流程通过接口封装起来,使用起来更加简单,降低系统复杂度。二、实例比如我们一个购物操作,需要下单,减库存,支付,记录日志,等等一系列复杂的操作还有判断,如果我们都写在一个方法里面,这样,一个方法几十上百行代码,会造成代码难以阅读维护,类似于这样所以,我们可以通过外观模式,优化...原创 2020-03-15 22:33:06 · 316 阅读 · 0 评论 -
面试必问的设计模式 | 单例模式
一、简介单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例。单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。从具体实现角度来说,就是以下三点:一是单例模式的类只提供私有的构造函数,二是类定义中含有一个该类的静态私...原创 2019-04-12 22:06:20 · 368 阅读 · 0 评论