设计模式--适配器模式

实验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.hqwc.cn/news/298096.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语法树的画法(根据文法求字符串)

目录 1.语法树的画法 2.语法树的短语 3.直接短语(直接到根部) 4.素短语 5.句柄 6.算符优先分析句型 1.语法树的画法 文法G[E]:E->EE | E*E | (E) | i ,字符串 ii*i 推导方式有两种最左推导和最右推导(推导的技巧就是逐步靠近字符串…

【Hadoop】Zookeeper架构/特点

Zookeeper 中的角色主要有以下三类: Zookeeper需要保证高可用性和强一致性为了支持更多的客户端,需要增加更多Server,但是Server增多,意味着投票阶段延迟增大,会影响整个系统的性能。所以在3.3.0中ZK引入的新角色&…

微服务架构<2>

在电商项目中,我们针对一些核心业务,比较复杂的业务需要做一些设计以及优化的过程首先我们针对于订单的模块拆分了2个子模块1.order-curr实时下单业务 2.order-his 做一些历史的订单归档我们的订单业务 >商品添加至购物车 >购物车结算--> 订单…

Python爬虫中文乱码处理实例代码解析

更多Python学习内容:ipengtao.com 大家好,我是彭涛,今天为大家分享 Python爬虫中文乱码处理实例代码解析。全文2800字,阅读大约8分钟 在进行网络数据抓取时,常常会遇到中文乱码的问题,这可能导致数据无法正…

大数据应用开发1——配置基础环境

一、基础环境配置 1.配置虚拟网络 1.1、点击1、编辑2和3, 1.2、点开4,编辑网关 2、配置虚拟机环境 1.1、安装一台虚拟机,使用root用户登录,打开终端 1.2修改主机名 终端输入: vim /etc/hostname使用vim编辑/etc/ho…

nosql-redis整合测试

nosql-redis整合测试 1、创建项目并导入redis2、配置redis3、写测试类4、在redis中创建key5、访问80826、在集成测试中测试方法 1、创建项目并导入redis 2、配置redis 3、写测试类 4、在redis中创建key 5、访问8082 6、在集成测试中测试方法 package com.example.boot3.redis;…

智能优化算法应用:基于广义正态分布算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于广义正态分布算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于广义正态分布算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.广义正态分布算法4.实验参数设定…

【二叉树】【单调双向队列】LeetCode239:滑动窗口最大值

作者推荐 map|动态规划|单调栈|LeetCode975:奇偶跳 涉及知识点 单调双向队列 二叉树 题目 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动…

【GitHub精选项目】抖音/ TikTok 视频下载:TikTokDownloader 操作指南

前言 本文为大家带来的是 JoeanAmier 开发的 TikTokDownloader 项目,这是一个高效的下载 抖音/ TikTok 视频的开源工具。特别适合用户们保存他们喜欢的视频或分享给其他人。 TikTokDownloader 是一个专门设计用于下载 TikTok 视频的工具,旨在为用户提供一…

【AI提示词故事】雪的诗意:静谧与活力的奇妙交织

雪的诗意:沉浸在雪景的浪漫氛围中 冬日的清晨,窗外的世界被一层洁白的雪覆盖着,仿佛是大自然为我们准备的一幅美丽画卷。 我走出房门,踏上雪地, 那柔软的雪粒在脚下发出轻柔的咯吱声,仿佛是在诉说着冬日的…

九、Seata的AT模式

目录 9.1 什么是弱一致性 ?9.2 Seata的弱一致性9.3 Seata的AT模式介绍9.4 AT模式流程图9.5 AT模式注意点9.6 全局锁的理解1、认识全局锁2、注册全局锁3、校验(获取)全局锁4、释放锁5、结论 9.7 AT的多数据源场景 9.1 什么是弱一致性 &#xf…

React 路由跳转

1. push 与 replace 模式 默认情况下,开启的是 push 模式,也就是说,每次点击跳转,都会向栈中压入一个新的地址,在点击返回时,可以返回到上一个打开的地址, 就像上图一样,我们每次返…