随笔分类 - 设计模式
摘要:一、JDK动态代理执行过程 上一篇我们讲了JDK动态代理的简单使用,今天我们就来研究一下它的原理。 首先我们回忆下上一篇的代码: public class Main { public static void main(String[] args) { IPaymentService paymentS
阅读全文
摘要:上一篇我们简单介绍了什么是代理模式,但我们说的仅仅是静态代理,所谓静态代理即代理类和目标类在代码中是确定的,因此称为静态,这种方式存在以下问题: 由于在使用时需要提前定义好代理类并实现对应主题的接口方法,随着需要代理的主题增加,代理类也会增加,导致项目中出现大量类情况,不易于项目维护。 那么有没有什
阅读全文
摘要:一、什么是代理模式 为其他对象提供一种代理以控制对这个对象的访问。其类图如下: Subject:抽象主题类,它既可以是抽象类也可以是接口类,是一个最普通的业务类型定义,无特殊要求。 RealSubject:具体主题类,被代理角色,是具体业务逻辑实现执行者。 Proxy:代理类,负责对具体主题的应用,
阅读全文
摘要:一、什么是建造者模式 建造者模式又叫生成器模式,它能将一个复杂对象的构建与其表示相分离,使得同样的构建模式可以创建不同表示。其类图如下: 由上面类图可以看出建造者模式主要有以下几个部分组成: 产品(Product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个零部件。 抽象建造者(Bui
阅读全文
摘要:一、什么是模板方法模式 模板方法模式:定义一个操作的算法的框架,将一些步骤延迟到子类中,从而使得子类在不改变整体算法结构的基础上即可重新定义该算法某些特点步骤。其类图如下: 从类图我们可以看出来模板方法非常简单,它仅仅利用了继承机制,其中AbstractClass为抽象模板,他的方法分两类: 基本方
阅读全文
摘要:说到工厂模式,可能我们脑海中就会蹦出简单工厂、工厂方法以及抽象工厂这几个名词,但是说起他们之间的区别、各自都解决了什么样的问题,那就比较懵了,所以今天我们详细梳理下这三者之间的区别与联系。 一、简单工厂 简单工厂严格来说不能算作一种设计模式,它更像一种编程习惯,用于将具体类的创建从客户端解耦,他的实
阅读全文
摘要:一、介绍 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 策略模式应用的例子很多,比如最常见的Java类库中的 Comparator,它将对象的具体比较算法封装起来,我们可以根据所要比较的对象的类型自由选择。策略模式类图如下
阅读全文
摘要:一、介绍 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要
阅读全文