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

设计模式--适配器模式

实验8:适配器模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解适配器模式的动机,掌握该模式的结构;

2、能够利用适配器模式解决实际问题。

[实验任务]:双向适配器

实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。

类图

源代码


public class Adapter implements Dog, Cat
{private Dog dog;private Cat cat;public Dog getDog(){return dog;}public void setDog(Dog dog){this.dog = dog;}public Cat getCat(){return cat;}public void setCat(Cat cat){this.cat = cat;}@Overridepublic void miao(){System.out.print("猫学");dog.wang();}@Overridepublic void catchMouse(){cat.catchMouse();}@Overridepublic void wang(){dog.wang();}@Overridepublic void act(){System.out.print("狗学");cat.catchMouse();}
}public interface Cat
{//猫叫public void miao();//猫捉老鼠public void catchMouse();
}public class CatImpl implements Cat
{@Overridepublic void miao(){System.out.println("猫叫:喵喵喵");}@Overridepublic void catchMouse(){System.out.println("猫捉老鼠");}
}public interface Dog
{//狗叫public void wang();//狗捉鸡public void act();
}public class DogImpl implements Dog
{@Overridepublic void act(){System.out.println("狗捉鸡");}@Overridepublic void wang(){System.out.println("狗叫:汪汪汪");}
}public class Client
{public static void main(String[] args){//实例化猫和狗Cat cat = new CatImpl();Dog dog = new DogImpl();//猫叫cat.miao();//狗捉鸡dog.act();//实例化双向适配器Adapter adapter = new Adapter();//将狗对象设置到适配器中adapter.setDog(dog);//将猫对象设置到适配器中adapter.setCat(cat);//将适配器对象赋值给猫,实现猫对象学习狗的行为cat = adapter;//猫学狗叫cat.miao();//将适配器对象赋值给狗,实现狗对象学习猫的行为dog = adapter;// 狗学猫捉老鼠dog.act();}
}

运行效果 

http://www.lryc.cn/news/266752.html

相关文章:

  • Node.js教程-express框架
  • location.origin兼容
  • spring boot集成mybatis和springsecurity实现权限控制功能
  • 按键修饰符
  • 新版IDEA中Git的使用(一)
  • 【性能测试】真实企业,性能测试流程总结分析(一)
  • 20231224解决outcommit_id.xml1 parser error Document is empty的问题
  • 电子电器架构刷写方案——General Flash Bootloader
  • 【Linux】僵尸与孤儿 进程等待
  • Java小案例-Sentinel的实现原理
  • 【Leetcode Sheet】Weekly Practice 21
  • C语言使用qsort和bsearch实现二分查找
  • MySQL的替换函数及补全函数的使用
  • 2022第十二届PostgreSQL中国技术大会-核心PPT资料下载
  • 2024 年 10大 AI 趋势
  • Uboot
  • ECMAScript 的未来:预测 JavaScript 创新的下一个浪潮
  • 代码随想录算法训练营第十三天 | 239. 滑动窗口最大值、347.前 K 个高频元素
  • 推荐五个免费的网络安全工具
  • Cross-Drone Transformer Network for Robust Single Object Tracking论文阅读笔记
  • 【LeetCode刷题笔记】动态规划(二)
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • 蓝牙技术在物联网中的应用
  • 宝塔面板Linux服务器CentOS 7数据库mysql5.6升级至5.7版本教程
  • 掌握常用Docker命令,轻松管理容器化应用
  • 【数据结构1-2】P5076 普通二叉树(简化版)(c++,multiset做法)
  • Linux系统安装及管理
  • MySQL学生向笔记以及使用过程问题记录(内含8.0.34安装教程
  • obs video-io.c
  • 简述 tcp 和 udp的区别?