摘要:一、概述 定义:命令(Command)模式又叫作动作(Action)模式或事务(Transaction)模式,是一种对象的行为模式。将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。上面的定义有以下几个要点: 参数化配置客户的请求:比如
阅读全文
摘要:一、概述 定义:策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(概念不好理解,可以看第二节的合例子) 基本角色: 环境(Context)角色:持有一个Strategy的引用,并执行策略的方法。 抽象策略(Strategy
阅读全文
摘要:一、定义 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 如果上面的话不好理解,请看下面的例子 二、示例 1)定义一个模板类:原则就是将所有子类通用的功能直接放在模板类里面,每个子类独有的功能放到子类来实现,不管是哪个子
阅读全文
摘要:一、概述 将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式。比如存在2个维度,第一个维度有一个抽象类A和对应的子类A1和A2;第二个维度有另一个接口B和对应的子类B1和B2;接口A依赖接口B。 所谓的独立变化就是当我们修改A1和A2或是修改B1和B2对方都不用修改。这种抽
阅读全文
摘要:一、概述 代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。 其特征是代理类与委托类有同样的接口,真正的核心业务逻辑还是在实际对象里面。 二、为什么要使用代理模式 当客户端不想直接调用实际对象,或是客户端直接调用实际对象有困难。 比如:想在实际对象的业务方法执行前或
阅读全文
摘要:在说原型模式之前先说一下浅拷贝和深拷贝的概念 一、浅拷贝和深拷贝 1、浅拷贝 在java中,对象创建后需要有一个引用变量来指向该对象实际的地址空间,也就是说引用变量与对象实体是两个不同的数据体。在Object类的clone()方法中。 对对象字段进行复制时,如果字段是String 和8种基本数据类型
阅读全文
摘要:一、java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式
阅读全文
摘要:一、概念 装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为。 基本角色: 抽象构件:它是具体构件和抽象装饰类的共同父类,声明了在具体构件中实现的业务方法,它的引入可以使客户端以一致的方式处理未被装饰的对象以及装饰之后的对象,实现客户端的透明操作。 具体构件:它是抽象构件类的子类,用
阅读全文
摘要:一、定义 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。比如以下的场景: 用手机充电为例,有一个手机的插孔是TypeC口,现在只有USB的数据线,这时候充电就需要一个转接口(Adapter类)来解决充电问题。 二、基本角色 目标
阅读全文
摘要:1、定义 是一种对象构建的设计模式,它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。产品类可以是一个具体的类,也可以是由一个抽象类与它的不同实现组
阅读全文
摘要:1、定义 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。观察者模式又叫发布-订阅(Publish/Subscribe)模式。 2、观察者模式的四种基本角色 抽象被观察者角色:也就是一个抽象主题,
阅读全文
摘要:1、简单工厂模式(静态工厂方法模式) 抽象实例: 具体实例: 具体工厂 测试类: 该模式的缺点:增加 具体实例 需要修改工厂类 2、工厂方法模式 抽象实例: 具体实例: 抽象工厂 具体工厂 测试类: 该模式的相对于 简单工厂模式 来说,如果要增加新的 具体实例 不需要修改原来的工厂方法,只需要新增一
阅读全文
摘要:1、饿汉式 2、懒汉式 以上两种模式:只适合在单线程环境使用,多线程环境容易出现不同步的情况。在多线程模式下,可能产生问题。比如下面的实例 执行结果: 之所以出现不同步,是因为,当多个线程执行 getInstance() 的时候,都发现instance是null,所以每个线程各自创建了一个insta
阅读全文