备忘录模式、解释器模式-爱代码爱编程
备忘录(Menento)模式 定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要的时候能将该对象恢复到原先保存的状态。该模式又叫快照模式。 优缺点 优点: 提供了一种可以回复状态的机制。用户当需要时能够比较方便地将数据恢复到某个历史的状态。实现了内部状态的封装。除了创建它的发起人之外的其它对象都不能够访
代码编织梦想
备忘录(Menento)模式 定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要的时候能将该对象恢复到原先保存的状态。该模式又叫快照模式。 优缺点 优点: 提供了一种可以回复状态的机制。用户当需要时能够比较方便地将数据恢复到某个历史的状态。实现了内部状态的封装。除了创建它的发起人之外的其它对象都不能够访
最近有一些系统设计方面的思考和体会,在这里梳理一下。 做技术方案,核心是下面几个问题: 做什么?- 产品需求 业务上怎么做?- 业务文档 技术上怎么做?- 技术方案 代码怎么实现?- 落地实现 明确了这几个问题,可以处理大部分日常需求开发,如果是比较复杂的业务系统,就需要拆解的更精细。 比如电商的商品管理、订单交易等系统的开发和重构,业
装饰器模式:在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰器模式的使用过程: 1.创建一个接口,然后写方法 2.创建类实现该接口,并实现接口里的方法 3.创建包装类,也实现上面的接口和方法 4.在包装类中声明被包装类的类型,通过构造器的方式注入 5.在包装类中,不需要修改的方法,直
模式定义 职责链模式(Chain of Responsibility Pattern):避免请求发送者和接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连成一条链,并且沿着这条链传递请求,直到有对象处理它为止。 由于英文翻译的不同,职责链模式又称为责任链模式,它是一种对象行为模式。 模式结构 Handel(抽象处理者): 抽象处理者定义了一个
别把一辈子过成一天。 简介 备忘录模式是属于行为型设计模式的一种。 该模式的核心思想是在不破坏封装性的前提下,捕获一个对象的内部状态,并且在该对象之外保存捕获到的状态。这样做的意义是确保以后可以随时将该对象恢复到原来保存的某一状态时。 通俗点说备忘录模式就是通过一种特定的手段来记录一个对象的某一状态,或者是该对象的某些数据,当要做回退时,可以轻
Java进阶之继承与多态 继承多态变量和向上造型多态类型系统 继承 1.在一开始创建Database数据库类、CD类、DVD类的时候,我们出现了大量的代码复制,这是代码质量不良的表现,那么我们应该如何改进呢? 2.代码里面的自己推测的注意点: ①子类与父类之间是如何建立联系的呢?是通过在子类的 “ public class 子类名 ”后面加上
单例设计模式: 所谓类的单例设计模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个实例对象。 那么如何实现上述单例设计模式呢? 实现步骤: 首先创建私有化构造器在内部创建对象,相当于这个类的属性使用公共的、静态的方法返回内部已创建的对象注:使用下述逻辑或许可帮助记忆 ∵ 单例模式,在外部只能有一个对象,即避免使用对象.方
Java中List和ArrayList的区别 List是一个接口,而ArrayList是List接口的一个实现类ArrayList类继承并实现了List接口因此,List接口不能创建实例对象,但是可以为List接口创建一个指向自己的对象引用。而ArrayList实现类的实例对象就在这充当指向List接口的对象引用。 List<String>
代码块(初始化块) 代码块的作用: 用来初始化类或对象 内部可以有输出语句,比如在{}之间加入System.out.println()语句 静态代码块: static{}对于静态代码块,随着类的加载而执行静态代码块只执行一次静态代码块的执行要优先于非静态代码块的执行静态代码块内只能调用静态的属性,方法,不能调用非静态的非静态代码块: {}非静态
代理模式(Proxy) 代理模式的基本介绍 代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象 代理模式有不同的形式, 主要有三种静态代理、动态代理(JDK 代
你好,我是 yes。 面向对象编程想必大家都耳熟能详,但是写了这么多代码你对面向对象有清晰的认识吗? 来看看这几个问题: 到底什么是面向对象编程?和面向过程编程有什么区别?什么又称为面向对象语言、面向过程语言?用面向对象语言写的代码就面向对象了?面向对象编程真的就这么好吗?复杂的业务用面向对象编程就合适了吗?我还真没具体地定义过到底什么是面向对
来到心仪已久的公司面试,刚推开门还没等我说话HR 小姐姐就主动问我:你是来参加面试的吧? 我心想不对啊:难道是因为我长的帅,小姐姐一眼就看出来我将来是这栋楼的主人,所以才主动跟我打招呼。 我昂起头,略微点点头:是的。 HR小姐姐:面试官马上就过来,我先带你去会议室。 在去会议室的路上,我发现大家脖子上都带着亮闪闪的工牌,我下意识
前言 今天本是一个阳光明媚,鸟语花香的日子。于是我决定在逛街中感受春日的阳光~结果晚上七点的时候,蚂蚁金服后端大佬来了电话,要进行一轮的技术面试。我一脸黑人问号???现在的面试都流行突袭吗? 于是我的第一次面试之旅,就此壮烈展开。 自我介绍 首先呢,大佬让我用两分钟自我介绍。本以为自己能滔滔不绝,将对方视作相亲对象般全方位介绍自己,结
1.说说Spring 里用到了哪些设计模式? 单例模式:Spring 中的 Bean 默认情况下都是单例的。无需多说。 工厂模式:工厂模式主要是通过 BeanFactory 和 ApplicationContext 来生产 Bean 对象。 代理模式:最常见的 AOP 的实现方式就是通过代理来实现,Spring主要是使用 JDK 动态代理和 C
工厂模式 简单工厂模式 类图展示 先定义一个车的抽象类 /** *车类的抽象列 */ public interface Car { void run(); } 定义两个车类的子类,实现了车类 public class Audi implements Car { @Override public void run
1.1 简介 1.1.1 概述 设计模式是软件设计中常见问题的典型解决方案。 它们就像能根据需求进行调整的预制蓝图, 可用于解决代码中反复出现的设计问题。设计模式与方法或库的使用方式不同, 很难直接在自己的程序中套用某个设计模式。 模式并不是一段特定的代码, 而是解决特定问题的一般性概念。 可以根据模式来实现符合自己程序实际所需的解决方案。 人
TestMapper mapper1 = sqlSession.getMapper(TestMapper.class); TestMapper mapper2 = sqlSession.getMapper(TestMapper.class); System.out.println(mapper1 == mapper2); 读mybatis源码过程中,产
一.小结 定义:在不破坏封装性的前提下,捕捉一个对象的内部状态,并在该对象之外保存这个状态。这样可以在以后将对象恢复到原先的状态。优点:1.给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态 2.实现了信息的封装,使得用户不需要关心状态的保存细节缺点:消耗资源,如果类的成员变量过多,势必会占用比较在的资源,而且每次保存都会消耗
意图:主要将数据结构与数据操作分离。主要解决:稳定的数据结构和易变的操作耦合问题。何时使用:需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作"污染"这些对象的类,使用访问者模式将这些封装到类中。如何解决:在被访问的类里面加一个对外提供接待访问者的接口。关键代码:在数据基础类里面有一个方法接受访问者,将自身引用传入访问者。应用实
抽象工厂模式 什么是抽象工厂模式?怎么实现抽象工厂模式?抽象工厂模式有哪些优缺点?抽象工厂模式的应用有哪些? 什么是抽象工厂模式? 定义如下:Provide an interface for creating families of related or dependent obejcts without specifying their c