设计模式(8)---适配器模式
2016-08-09 23:01
176 查看
适配器模式 Adapter(结构型模式)
1.概述
假如只有一个3孔插座,和一个只能插进2孔的插头,可以选择去买一个插排,这个插排就可以看成适配器。
适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
其中分为类适配器和对象适配器,这里只介绍对象适配器。
2.结构图
3.代码
/* * 标准接口 */ public interface Target { public void request(); }
public class TargetImpl implements Target { @Override public void request() { System.out.println("具有 普通功能..."); } }
/* * 需要转换的接口 */ public interface Adaptee { public void specificRequest(); }
public class AdapteeImpl implements Adaptee { @Override public void specificRequest() { System.out.println("具有 特殊功能..."); } }
// 适配器类,直接关联被适配类,同时实现标准接口 public class Adapter implements Target { private Adaptee adaptee; // 可以通过构造函数传入具体需要适配的被适配类对象 public Adapter (Adaptee adaptee) { this.adaptee = adaptee; } @Override public void request() { // 这里是使用委托的方式完成特殊功能 this.adaptee.specificRequest(); } }
public class Test { public static void main(String[] args) { //具有 普通功能... Target a = new TargetImpl() ; a.request(); //具有 特殊功能... a = new Adapter(new AdapteeImpl()) ; a.request(); } }
4.适用场景
两个类所做的事情相同或相似,但是具有不同接口的时候。
使用第三方组件,组件接口定义和自己定义的不同,不希望修改自己的接口,但是要使用第三方组件接口的功能。
适配器模式是一种亡羊补牢的做法,如果事先统一好接口,可以避免。
相关文章推荐
- C#语法之泛型
- Java Se ----集合框架
- 1004: 画图
- 计划的总括
- 第2章 JAX-RS 2.0快递实现
- JQuary Note
- PHP安全编程之不要让不相关的人看到报错信息
- 实现变色TextView及ViewPager指示器(原来可以这么简单)
- [转]MVC4项目中验证用户登录一个特性就搞定
- pipeline(管道的连续应用)
- Shell脚本学习(二)制作SSH登录远程服务器的Shell脚本
- hdoj 5556 Land of Farms 二分图匹配
- android edittext不可编辑
- 拜拜了,浮动布局-基于display:inline-block的列表布局 张鑫旭博客笔记
- (HDU 5810)2016 Multi-University Training Contest 7 Elegant Construction (期望、方差、二项分布)
- QPushButton设置背景图片变换(素材四连图)
- 归并排序 Mergesort
- BZOJ-4034- [HAOI2015]T2-树链剖分+线段树
- 基础3
- Android下拉刷新上拉加载控件,对所有View通用