当前位置: 首页 > news >正文

常用设计模式之适配器

常用设计模式之适配器

 

  • UML

 

  • 对象适配器

实现目标接口(继承目标类),同时引用真正实现类的对象。

 1 //interface Target { void handleRequest(); }
 2 class Target {
 3     public void handleRequest(){
 4         System.out.println(" Target handleRequest .... ");
 5     }
 6 }
 7 class Adaptee{
 8     public void handleRequest(){
 9         System.out.println(" Adaptee handleRequest ... ");
10     }
11 }
12 //class Adapter implements Target{
13 class Adapter extends Target{
14     /*private Adaptee adaptee = new Adaptee();*/
15     private Adaptee adaptee;
16     public Adapter(Adaptee adaptee){
17         this.adaptee = adaptee;
18     }
19     public void handleRequest(){
20         adaptee.handleRequest();
21     }
22 }
23 public class AdapterTest{
24     public static void main(String[] args){
25         Target t = new Adapter(new Adaptee());
26         t.handleRequest();
27     }
28 }
  • 类适配器

实现目标接口,同时继承真正实现类。(由于类适配器模式通过多重继承实现,而java不支持多重继承,因此用接口实现)

 1 interface Target {
 2     void handleRequest();
 3 }
 4 class Adaptee {
 5     public void handleRequest(){
 6         System.out.println("--------- Adaptee handleRequest ... ------------" );
 7     }
 8 }
 9 class Adapter extends Adaptee implements Target {
10     public void handleRequest(){
11         super.handleRequest();
12     }
13 }
14 public class AdapterTest{
15     public static void main(String[] args){
16         Target t = new Adapter();
17         t.handleRequest();
18     }
19 }

 

posted on 2016-11-16 23:22 王仁彪 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/renbiao/p/6072033.html

相关文章:

  • 加速度传感器检测物体倾角的原理
  • codeforces 734E(DFS,树的直径(最长路))
  • php-fpm服务启动脚本
  • html关于图片和链接的笔记
  • jQuery 语法
  • 【FFMPEG】FFMPEG介绍
  • [原创软件]Maya语言切换工具
  • 【GoLang】GoLang 错误处理 -- 异常处理思路示例
  • Tower 实战一:MavLink的连接与通信
  • hive 数据清理--数据去重
  • rails生成器生成自定义controller模板
  • 关于适配器中设置显示与隐藏的问题
  • 递归的例子
  • 各种居中对齐
  • 面向对象 封装 、继承
  • [译]Python中的类属性与实例属性的区别
  • 「译」Node.js Streams 基础
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 2017-08-04 前端日报
  • bearychat的java client
  • Consul Config 使用Git做版本控制的实现
  • DOM的那些事
  • Electron入门介绍
  • node.js
  • PHP变量
  • Selenium实战教程系列(二)---元素定位
  • vagrant 添加本地 box 安装 laravel homestead
  • Web设计流程优化:网页效果图设计新思路
  • windows下如何用phpstorm同步测试服务器
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 翻译:Hystrix - How To Use
  • 将 Measurements 和 Units 应用到物理学
  • 算法系列——算法入门之递归分而治之思想的实现
  • ionic入门之数据绑定显示-1
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • # 数据结构
  • #pragma 指令
  • (12)Linux 常见的三种进程状态
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (ZT)薛涌:谈贫说富
  • (二十四)Flask之flask-session组件
  • (五)MySQL的备份及恢复
  • (转)LINQ之路
  • (转)大道至简,职场上做人做事做管理
  • .Net面试题4
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • [BZOJ 4598][Sdoi2016]模式字符串
  • [bzoj1324]Exca王者之剑_最小割
  • [CC2642r1] ble5 stacks 蓝牙协议栈 介绍和理解
  • [excel与dict] python 读取excel内容并放入字典、将字典内容写入 excel文件
  • [JavaEE系列] wait(等待) 和 notify(唤醒)