结构型模式
综述:
关注将现有类或现有对象组织在一起形成更加强大的结构
1适配器类:
适配器类所包装的对象就是适配者,适配器提供客户类所需要的接口,适配器的实现就是把客户类的请求转化为对适配者的相应接口的调用
目标抽象类+适配者+适配器类(负责将适配者和目标抽象类适配,实现target继承适配者adaptee)
引入适配器类
adapter extends adaptee implements target
该模式的应用:jdbc中每一个数据库的驱动程序都是一个适配器,适配者是各个数据库存储引擎,目标类是jdbc接口,使得每一个数据库存储引擎可以通过适配器驱动程序与jdbc发生作用
2桥接模式:
将抽象部分和实现部分分离,使得他们可以独立的变化,将抽象和实现脱耦合
(implements)实现类接口+具体实现类1+具体实现类2+具体实现类3+另一个抽象类+扩充抽象类1+扩充抽象类2(extends)
该模式的实际应用:java虚拟机的设计,应用程序+运行平台
3组合模式:
首先,想到组合模式就应该想到树型结构图,(文件浏览)
组合模式描述了如何将容器对象和叶子对象进行递归组合,使得用户在使用时无需对他们进行区分
抽象构件类+叶子构件类1+叶子构件类2+容器构件类(extends)
该模式实际应用:操作系统目录结构,对文件和文件夹的操作应为组合模式
4装饰模式:
是一种用于替代继承的技术,通过一种无需定义子类的方式来给对象动态增加职责,即通过关联关系取代继承关系
引入装饰类,装饰类中可以调用被装饰类的方法,也可以定义新的方法
抽象装饰类+具体装饰类1+具体装饰类2+被装饰抽象构件+被装饰具体构件类(抽象装饰类和被装饰具体构件实现被装饰抽象构件)
实际应用:java io
5外观模式:
外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
外观类+若干子系统类
6享元模式:
解决系统中存在的大量相同或相似对象占内存大的问题,通过共享技术实现相似对象的复用
提供一个享元池用于存储已经创建好的享元对象,通过享元工厂类将享元对象提供给客户端
抽象享元类+具体享元类1+具体享元类2+享元工厂类
实际应用:线程池+数据库连接池
7代理模式:
真实对象和代理对象需要实现相同的接口
抽象接口+真实对象类+代理对象类
实际应用:spring aop中使用了动态代理