Proxy 代理模式

Proxy 代理模式

目录

[TOC]

1. 概述

1.1. 设计模式定义

代理模式(Proxy)是通过代理对象访问目标对象,这样可以在目标对象基础上增强额外的功能,如添加权限,访问控制和审计等功能。

1.2. 自我理解

对一个对象进行封装,比如有一个老代码中间有一个核心类,需要增加监控功能,但是该功能又不需要在老业务中使用,这时候可以使用代理模式来进行额外功能的增加了。
而代理模式有两种,静态代理、动态代理

1.3. 静态代理

每一个代理类都必须实现一遍委托类(也就是realsubject)的接口,如果接口增加方法,则代理类也必须跟着修改。其次,代理类[……]

Read more

Mediator 中介者模式

Mediator 中介者模式

目录

[TOC]

1. 概述

1.1. 设计模式定义

定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。

1.2. 自我理解

这个模式就是要让各个系统之间彻底解耦,不要互相强耦合在一起,互相调用过多,调用关系过于混乱。互相调用的时候通过一个中间的组件来解耦。
在实际的企业开发中,不是这么玩儿的,很少有见到说封装一个所谓的中介者,去让各个模块之间解耦,思考这个模式的本质,让各个模块之间解耦合
最最常见的一个方式,就是系统与系统之间,不是[……]

Read more

Prototype 原型模式

Prototype 原型模式

目录

[TOC]

1. 概述

1.1. Head First设计模式定义

当创建给定类的实例的过程很昂贵或很复杂时,就使用原型模式。

1.2. 自我理解

 在java中我们知道通过new关键字创建的对象是非常繁琐的(类加载判断,内存分配,初始化等),在我们需要大量对象的情况下,原型模式就是我们可以考虑实现的方式。
  原型模式我们也称为克隆模式,即一个某个对象为原型克隆出来一个一模一样的对象,该对象的属性和原型对象一模一样。而且对于原型对象没有任何影响。原型模式的克隆方式有两种:浅克隆和深度克隆。
  

原型模式
说明[……]

Read more

Builder 构造器模式

Builder 构造器模式

目录

[TOC]

1. 概述

1.1. Head First设计模式定义

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

1.2. 自我理解

其核心思想是将一个“复杂对象的构建算法”与它的“部件及组装方式”分离,使得构件算法和组装方式可以独立应对变化;复用同样的构建算法可以创建不同的表示,不同的构建过程可以复用相同的部件组装方式。

为了将复杂对象的构建过程与它的部件分离。注意: 是解耦过程和部件。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合[……]

Read more

Facade 外观模式

Facade 外观模式

目录

[TOC]

1. 概述

1.1. Head First设计模式定义

提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

1.2. 自我理解

多个具体的功能封装成一个具体的业务,原来我们系统中 service 层就是对 dao的封装,比如说我们新增一条记录,先调用 dao 查询是否记录存在,调用其他检查工具是否有字段不符合系统要求等一系列操作,service仅提供 insert 方法,让调用者使用更加方便。

1.3. 外观模式的组成

客户 (Client):通过调用 Facede 来[……]

Read more

Singleton 单例设计模式

Singleton 单例设计模式

目录

[TOC]

概述

单例模式就是保证对象的唯一性,在项目启动之后,只初始化一次,通常用于读取配置文件在Configuration类似的类中。

单例模式分两种,饿汉式,懒汉式。
饿汉式:项目启动就已经初始化好,等待调用。
懒汉式:只有当单例对象第一次被调用时才初始化。

饿汉式Demo

懒汉式,双检锁,线程非绝对安全的Demo

懒汉式,线程非绝对安全,基于内部类实现的Demo

[crayon-68214024[……]

Read more

AbstractFactory 抽象工厂模式

AbstractFactory 抽象工厂模式

目录

[TOC]

1. 概述

1.1. Head First设计模式定义

抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
抽象工厂允许客户使用抽象的接口来创建一组相关的产品,而不需要知道或关心产出的具体产品类是什么。这样一来,客户就从具体的产品中被解耦。

1.2. 自我理解

通过抽象工厂所提供的接口,可以创建产品的家族,利用这个接口书写代码,我们的代码将从实际工厂解耦,以便在不同上下文中实现各式各样的工厂,制造各样不同的产品。
核心思想是,如果需要一个工厂,这个工厂可以生产出相关联的一[……]

Read more

FactoryMethod 工厂方法模式

FactoryMethod 工厂方法模式

目录

[TOC]

1. 概述

1.1. Head First设计模式定义

定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。

1.2. 自我理解

工厂方法其实是由简单工厂和模板模式结合起来的一种,一般工厂只针对一个对象初始化,而在初始化对象之后有一些事情需要做,那么把要做的事情都写到工厂里面也是很常见的事情。

1.3. 工厂方法的组成

抽象工厂角色:是具体工厂角色必须实现的接口或者必须继承的父类。
具体工厂角色:它含有和具体业务逻辑有关的代码,由应用程序调用以创建对应的具[……]

Read more

SimpleFactory 简单工厂模式

SimpleFactory 简单工厂模式

目录

[TOC]

1. 概述

1.1. Head First设计模式定义

简单工厂其实并不是一个设计模式,反而比较像一种编程习惯。

1.2. 自我理解

当一个框架或者服务有多个可以给操作者提供选择时,如果我们去 new 实例化这个具体类时,我们这个实用类就已经绑定了具体的类,从而导致我们的代码更加脆弱,缺乏弹性。当然,现在我们几乎所有的项目都会去使用Spring这个超级大工程去维护实例,如果自己开发一个框架,没有使用Spring这个超级大工厂,我们就可以使用简单工厂来辅助我们实例化具体的类。

1.3. 简单工厂的组[……]

Read more

TemplateMethod 模板方法模式

TemplateMethod 模板方法模式

目录

[TOC]

1. 概述

1.1. Head First设计模式定义

模板方法模式 Template Method Parrern)在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义方法中的某些步骤。

模板就是一个方法,更具体的说,这个方法将算法定义为一组步骤,其中的任何步骤都可以是抽象的,由子类负责实现。这可以确保算法的结构保持不变,同时由子类提供部分实现。

1.2. 自我理解

高频使用的设计模式,只要有共同的流程,只是实现不一样,就可以用该模式。[……]

Read more