适配器模式——双向适配器

  • 一、问题描述
  • 二、问题分析
    • 1.类图分析
  • 三、适配器模式的优点
  • 四、代码及结果

一、问题描述

  设计和实现一个双向适配器实例,使得猫Cat可以学狗Dog叫Cry(),狗可以学猫抓老鼠CatchMouse(),设计类图并编程实现。

二、问题分析

1.类图分析

三、适配器模式的优点

  将目标类和适配者类解耦,增加了类的透明性和复用性,将具体的实现封装在适配者类中,对于客户端类来说是透明的,而且提高了适配者的复用性。同时灵活性和扩展性都非常好,符合开闭原则。

四、代码及结果

Cat接口(另一个类似):

public interface Cat {void cry();void catchMouse();
}

实体Cat类(另一个类似):

public class ConcreteCat implements Cat{@Overridepublic void cry() {System.out.println("猫叫");}@Overridepublic void catchMouse() {System.out.println("猫抓老鼠");}
}

适配器类:

public class Adapter implements Dog,Cat{private Cat cat;private Dog dog;public Cat getCat() {return cat;}public void setCat(Cat cat) {this.cat = cat;}public Dog getDog() {return dog;}public void setDog(Dog dog) {this.dog = dog;}@Overridepublic void cry() //猫学狗叫{System.out.print( "猫学");dog.wang();}@Overridepublic void catchMouse() {cat.catchMouse();}@Overridepublic void wang() {dog.wang();}@Overridepublic void action() //狗学猫抓老鼠{System.out.print( "狗学");cat.catchMouse();}
}
}

Test测试类

public class Test {public static void main(String args[]){Cat cat1 = new ConcreteCat();Dog dog1 = new ConcreteDog();Adapter A1 = new Adapter();A1.setCat(cat1);A1.setDog(dog1);cat1 = (Cat) A1;cat1.catchMouse();cat1.cry();dog1 = (Dog) A1;dog1.action();}
}

运行结果:

适配器模式——双向适配器相关推荐

  1. 双向适配器 java_类适配器,双向适配器

    不兼容结构的协调--适配器模式(三) 类适配器 除了对象适配器模式之外,适配器模式还有一种形式,那就是类适配器模式,类适配器模式和对象适配器模式最大的区别在于适配器和适配者之间的关系不同,对象适配器模 ...

  2. 【设计模式】适配器模式 ( 类适配器代码模板 | 对象适配器代码模板 | 适配器模式示例 )

    文章目录 I . 适配器模式 ( 类适配器 ) 代码模板 II . 适配器模式 ( 对象适配器 ) 代码模板 III . 适配器模式 代码示例 I . 适配器模式 ( 类适配器 ) 代码模板 1 . ...

  3. 适配器模式(类适配器)

    java设计模式大体分为23种设计模式,直接通过例子学习设计模式,更易于理解和思考其中的原理和作用,以下给出 适配器模式 的第一种(一个有三种)的demo,叫做类适配器模式: MainRun.java ...

  4. 设计模式适配器模式_适配器设计模式示例

    设计模式适配器模式 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式如此重要 ...

  5. 适配器模式之类适配器与对象适配器的区别及代码实现

    什么是适配器模式? 适配器模式(Adapter):直观理解就是使原来不能一起相互工作(接口不兼容)的两个功能通过Adapter兼容在一起. 类适配器和对象适配器 类适配器 Adapter 类继承Ada ...

  6. 大话设计模式之爱你一万年:第六章 结构型模式:适配器模式:i7爱妻:为爱找份工作:2.适配器模式之类适配器

    在这一节我们就看一看第一类:类适配器模式 一.类适配器基本概念 1.1 说明 类适配器模式在编译时实现target(目标)接口.这种适配器模式使用了多个实现了期待的接口或者已经存在的接口的多态接口.比 ...

  7. 适配器模式之对象适配器

    问题导入:比如有A型螺母和B型螺母,那么用户可以再A型螺母上直接使用按着A型螺母生产的A型螺丝,同样也可以在B型螺母上直接使用按着B型 螺母标准生产的B型螺丝.但是由于A型螺母和B型螺母的标准不一样, ...

  8. C++设计模式——适配器模式(对象适配器、类适配器)

    http://blog.jobbole.com/109381/?winzoom=1 前言 现在的笔记本都只存在USB接口,用来口,电脑上存在的是USB接口,两者如何通信呢?可以使用USB转串口线连接电 ...

  9. 【设计模式】适配器模式 ( 概念 | 适用场景 | 优缺点 | 外观模式对比 | 适配器模式相关角色 | 类适配器 | 对象适配器 | 实现流程 )

    文章目录 I . 适配器模式概念 II . 适配器模式 适用场景 III . 适配器模式 优缺点 IV . 适配器模式 与 外观模式对比 V . 适配器模式 相关角色 ( 重点 ) VI . 适配器模 ...

最新文章

  1. IJCAI 2020开幕,杰出论文奖、卓越研究奖、约翰·麦卡锡奖等8项大奖公布 | AI日报...
  2. Oracle日常巡检
  3. 【洛谷3648】[APIO2014] 序列分割(斜率优化DP)
  4. Java二叉树的构建与遍历
  5. @Transactional 注解的失效场景
  6. C++ 容器适配器priority_queue的使用及实现
  7. Ruby之散列与快排小程序
  8. Python——模拟轮盘抽奖游戏
  9. 20120510,OSPF第三部分
  10. php在线解密mcrypt,PHP 基于 Mcrypt 的加密解密简单类
  11. c语言-树的基础知识
  12. 条件随机场 Conditional Random Fields
  13. IT资源书籍999999999本
  14. 如何制作一个计算机病毒,怎样制作一个简单的电脑病毒
  15. 怎么完全卸载赛门铁克_赛门铁克(sep)卸载方法
  16. 常见的U盘,内存卡修复工具及其修复方法
  17. 小程序超过2M限制的方法——分包加载
  18. UiPath常用元素识别
  19. tp5 微信分享朋友或朋友圈
  20. 火遍网络的KPI异常检测到底什么梗?

热门文章

  1. (转)parser.parse_args()的解释
  2. visdom 使用教程
  3. 基于Java的CSV格式文件处理(excel逗号分隔符文件)
  4. 【渝粤教育】国家开放大学2018年秋季 2175T市场营销学 参考试题
  5. 个人学习笔记——庄懂的技术美术入门课(美术向)03
  6. 编译opus:error: possibly undefined macro: AM_PROG_LIBTOOL
  7. 华为OD机试真题- 不含101的数【2023Q2】【JAVA、Python、C++】
  8. 天池二手车交易价格预测-Task1
  9. 按什么键启用计算机管理,开机按什么进入大白菜_电脑开机按哪个键启动大白菜U盘-系统城...
  10. QUIC协议原理分析