适配器模式(Adapter):类适配器、对象适配器
来源:互联网 发布:hlsl 算法 编辑:程序博客网 时间:2024/05/29 14:48
1. 适配器模式主要应用于“希望复用一些现存的类,但是接口又与复用环境要求不一致的情况”,在遗留代码复用、类库迁移等方面非常有用。
2. 适配器模式有对象适配器和类适配器两种形式的实现结构,但是类适配器采用“多继承”的实现方式,带来了不良的高耦合,所以一般不推荐使用。对象适配器采用“对象组合”的方式,更符合松耦合精神。
// 已存在的、具有特殊功能、但不符合我们既有的标准接口的类class Adaptee {public void specificRequest() {System.out.println("被适配类具有 特殊功能...");}}
// 目标接口,或称为标准接口interface Target {public void request();}// 具体目标类,只提供普通功能class ConcreteTarget implements Target {public void request() {System.out.println("普通类 具有 普通功能...");}}
// 适配器类,继承了被适配类,同时实现标准接口class Adapter extends Adaptee implements Target{public void request() {super.specificRequest();}}
// 测试类public class Client {public static void main(String[] args) {// 使用普通功能类Target concreteTarget = new ConcreteTarget();concreteTarget.request();// 使用特殊功能类,即适配类Target adapter = new Adapter();adapter.request();}}
普通类 具有 普通功能...被适配类具有 特殊功能...
// 适配器类,直接关联被适配类,同时实现标准接口class Adapter implements Target{// 直接关联被适配类private Adaptee adaptee;// 可以通过构造函数传入具体需要适配的被适配类对象public Adapter (Adaptee adaptee) {this.adaptee = adaptee;}public void request() {// 这里是使用委托的方式完成特殊功能this.adaptee.specificRequest();}}
// 测试类public class Client {public static void main(String[] args) {// 使用普通功能类Target concreteTarget = new ConcreteTarget();concreteTarget.request();// 使用特殊功能类,即适配类,// 需要先创建一个被适配类的对象作为参数Target adapter = new Adapter(new Adaptee());adapter.request();}}
对于对象适配器:
1. 允许一个Adapter与多个Adaptee,即Adaptee本身以及它的所有子类(如果有子类的话)同时工作。Adapter也可以一次给所有的Adaptee添加功能。
2. 使得override(重定义)Adaptee的行为比较困难。如果一定要override Adaptee的方法,就只好先做一个Adaptee的子类以override Adaptee的方法,然后再把这个子类当作真正的Adaptee源进行适配。
0 0
- 适配器(adapter)模式--类适配器和对象适配器
- 适配器模式(Adapter):类适配器、对象适配器
- 适配器模式(Adapter):类适配器、对象适配器
- 适配器模式(Adapter):类适配器、对象适配器
- 适配器模式(Adapter):类适配器、对象适配器
- 适配器模式(Adapter):类适配器、对象适配器
- 适配器模式(Adapter):类适配器、对象适配器
- 适配器模式(Adapter):类适配器、对象适配器
- 适配器模式(Adapter):类适配器、对象适配器
- 适配器模式(Adapter):类适配器、对象适配器
- 适配器模式(Adapter):类适配器、对象适配器
- 适配器模式(Adapter):类适配器、对象适配器
- 适配器模式(Adapter):类适配器、对象适配器
- JAVA设计模式-适配器(类适配器、对象适配器)模式-Adapter
- 7种结构型模式之:适配器模式(Adapter):类适配器、对象适配器
- 设计模式之适配器模式(Adapter):类适配器、对象适配器
- [设计模式](五):适配器模式(Adapter)[类适配器、对象适配器、接口适配器]
- 适配器模式:类适配器和对象适配器
- Flask导入配置文件
- 字典树模板
- 一个网站上线之后会赋予这个网站一些权重
- oracle tnslistener适配器错误tns-12541
- 二叉树(java版)
- 适配器模式(Adapter):类适配器、对象适配器
- O(N)的时间寻找第K大数——Python
- 摆动序列
- Leetcode NO.171 Excel Sheet Column Number
- mysql回顾复习
- 全面理解Java中的String数据类型
- mybatis利用log4j打印日志到控制台
- 瓷砖铺放
- XPCOM:LINUX下的组件开发技术