适配器模式代码示例

2023-11-06

package com.example.shipeiqi;


public interface ThreeElectricOutlet
{
	
	//用来刻画三相插座  
	public abstract void connectElectricCurrent();
}
package com.example.shipeiqi;


public class TreeElecricAdapter implements ThreeElectricOutlet
{
	
	TwoElectricOutlet outlet;
	
	public TreeElecricAdapter(
			TwoElectricOutlet teo )
	{
		this.outlet = teo;
	}
	
	@Override
	public void connectElectricCurrent()
	{
		outlet.connectElectricCurrent();
	}
}


package com.example.shipeiqi;


public interface TwoElectricOutlet
{
	
	//刻画两相插座  
	public abstract void connectElectricCurrent();
}


package com.example.shipeiqi;


public class Tv implements TwoElectricOutlet
{
	
	private String name;
	
	public Tv()
	{
		name = "长江电视机";
	}
	
	public Tv(
			String s )
	{
		this.name = s;
	}
	
	@Override
	public void connectElectricCurrent()
	{
		turnOn();
	}
	
	private void turnOn()
	{
		System.out.println( name + "开始播放节目" );
	}
}


package com.example.shipeiqi;


public class Wash implements ThreeElectricOutlet
{
	
	private String name;
	
	public Wash()
	{
		name = "洗衣机";
	}
	
	public Wash(
			String name )
	{
		this.name = name;
	}
	
	@Override
	public void connectElectricCurrent()
	{
		turnOn();
	}
	
	private void turnOn()
	{
		System.out.println( name + "开始洗衣服" );
	}
}


package com.example.shipeiqi;


/**
 * 适配器模式示例
 * 适配器一共包括3种角色
  1、目标:目标是一个接口,该接口是客户想使用的接口
  2、被适配者:被适配者是一个已存在的接口或抽象类,这个接口或抽象类需要适配
  3、适配器:适配器是一个类,该类实现了目标接口并包含有被适配者的引用,即适配者的指着是对被适配者接口与目标进行适配
 * @author Administrator
 *
 */
public class TestActivity
{
	
	public static void main(
			String[] args )
	{
		ThreeElectricOutlet outlet;
		Wash wash = new Wash();
		outlet = wash;
		outlet.connectElectricCurrent();
		Tv tv = new Tv();
		TreeElecricAdapter adapter = new TreeElecricAdapter( tv );
		outlet = adapter;
		outlet.connectElectricCurrent();
	}
}


输出结果:


洗衣机开始洗衣服
长江电视机开始播放节目

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

适配器模式代码示例 的相关文章

  • Leetcode[数组] 三数之和 -- 双指针法

    0 题目描述 leetcode原题链接 三数之和 1 排序 双指针解法 class Solution def threeSum self nums List int gt List List int n len nums if not nu
  • JVM系列之内存分配与回收策略

    前言 经过前面几篇文章 我们已经对JVM虚拟机有了个初步认识 也了解了各区域应用哪些收集器 以及每个收集器用哪些收集算法 但是在这一系列过程中 其实就是一个对象的由生到死的过程 那么在这过程中对象是怎么处理它的生命周期的呢 今天我们就来介绍
  • Web项目-Nginx项目部署

    一 Linux网络 1 网络服务 查看当前网络的状态 并启动和停止网络服务 查看ip ifconfig ip addr 修改网卡ip vim etc sysconfig network scripts ifcfg ens33 概要信息如下
  • NS-3的安装及配置

    本教程基于VM Ware 虚拟机上安装的Ubuntu20 04 一 安装 NS 3 本体 准备 安装开始之前建议大家更换一下软件源并更新一下库 这样接下来的安装会块很多 由于安装过程中需要用到一些工具 所以提前准备好 已经安装的直接下一步
  • springboot整合mysql和mongodb双数据源

    因为业务需求 需要在一个项目中同时使用myslq和mongodb数据库 在网上找了好久都没有 只有相同数据库的双数据源 当时就想如果按照相同数据库的双数据源配置分别配置myslq和mongodb 一 先看一下pom文件
  • The type or namespace name ‘****‘ could not be found (are you missing a using directive or an assemb

    引用的类库目标框架不能大于当前项目的目标框架 修改一致后即可正确编译 参考文章 https blog csdn net weixin 34254823 article details 90098028
  • Error : DEP6810 Windowsphone 真机调试错误

    Windows phone 真机调试时遇到如下错误 Error DEP6810 MdilXapCompile exe failed with error code 2001 See log file C Users Documents Vi
  • 小程序用户头像昵称,微信头像昵称填写onChooseAvatar(2022最佳实践uniapp和原生)

    官方调整公告 小程序用户头像昵称获取规则调整公告 解决方案1 如有必要场景需收集用户头像昵称 可在个人中心或设置等页面让用户完善个人资料 解决方案二 官方 微信头像昵称填写 使用方法 头像选择 需要将 button 组件 open type
  • Mac配置$JAVA_HOME

    很奇怪 在新的Mac上安装了JDK 但是并没有自动配置 JAVA HOME 导致有些需要依赖Java环境的软件启动失败 找不到JAVA HOME的路径 我们首先通过echo JAVA HOME命令看 是否配置了JAVA HOME 如果没有输
  • 序列化和反序列化二叉搜索树

    序列化和反序列化二叉搜索树 序列化是将数据结构或对象转换为一系列位的过程 以便它可以存储在文件或内存缓冲区中 或通过网络连接链路传输 以便稍后在同一个或另一个计算机环境中重建 设计一个算法来序列化和反序列化 二叉搜索树 对序列化 反序列化算
  • 解决pycharm安装好后打不开的问题

    你最近应该把带有Visual C 字样的东西卸载了吧 把 Visual C 安装回来就OK了 安装网址 https support microsoft com zh cn help 2977003 the latest supported
  • 树莓派4B下opencv3.4.0的安装测试与所有错误处理

    1 opencv3 4 0的下载 可以在树莓派的终端界面通过wegt命令下载 但下载速度可能很慢 终端输入下列代码进行下载 cd home pi Downloads wget https github com Itseez opencv a
  • Erlang数据类型的表示和实现(5)——binary

    binary 是 Erlang 中一个具有特色的数据结构 用于处理大块的 原始的 字节块 如果没有 binary 这种数据类型 在 Erlang 中处理字节流的话可能还需要像列表或元组这样的数据结构 根据之前对这些数据结构 Eterm 的描
  • VI/VIM 键盘图 及常规快捷操作

    一 VI VIM 键盘图 二 模式转换 2 1 一般模式 2 2 编辑模式 2 3 命令模式
  • EasyExcel导出图片到Excel

    EasyExcel导出图片到Excel 需要自己重新写转换器 但是1000张以下导出是没问题的 10000以上会卡顿 有意向的小伙伴可以一起讨论下 如何处理大数量的图片导出到excel import com alibaba excel co
  • GCC详解-总览

    1 GCC是什么 早期 GCC 的全拼为 GNU C Compiler 即 GUN 计划诞生的 C 语言编译器 显然最初 GCC 的定位确实只用于编译 C 语言 但经过这些年不断的迭代 GCC 的功能得到了很大的扩展 它不仅可以用来编译 C
  • 数字IC设计学习笔记_静态时序分析STA_配置STA环境2

    数字IC设计学习笔记 配置STA环境2 1 约束 Input path 和 Output path 2 时序路径组Timing path groups 3 外部属性建模 1 约束 Input path 和 Output path 约束 In
  • 【华为OD机试真题 python】识图谱新词挖掘【2023 Q1

    题目描述 识图谱新词挖掘 小华负责公司知识图谱产品 现在要通过新词挖掘完善知识图谱 新词挖掘 给出一个待挖掘文本内容字符串Content和一个词的字符串word 找到content中所有word的新词 新词 使用词word的字符排列形成的字
  • ES6入门:iterator迭代器

    迭代模式 ES6迭代器标准化接口 迭代循环 自定义迭代器 迭代器消耗 一 迭代模式 迭代模式中 通常有一个包含某种数据集合的对象 该数据可能存在一个复杂数据结构内部 而要提供一种简单的方法能够访问数据结构中每个元素 对象消费者并不需要知道如
  • 二、redis中String和List两种数据类型和应用场景

    导读 前面文章 一 深入理解redis之需要掌握的知识点 中 我们对redis需要学习的内容进行了一个梳理 从本篇文章开始 我们将要对redis中各个知识点做详细的学习和分析 本篇文章我们学习的是redis中基础数据类型String和Lis

随机推荐

  • matlab如何求矩阵特征值

    根据线性代数理论 特征值与特征向量只存在于方阵 如下所示为一方阵A 在matlab输入矩阵 A 1 2 4 4 0 7 9 1 3 查阅matlab help可以知道 利用eig函数可以快速求解矩阵的特征值与特征向量 格式 V D eig
  • 【踩坑】AES256解密失败,jasypt解密失败 最简单解决办法(本地环境)

    背景 最近被拉去一个新项目组 他们用的jasypt加密方式为数据库信息加密 我拉取代码后一跑 果然报错了 Unable to decrypt ENC xxxx 在试了n中方法 包括 创建新项目使用jasypt复现 写demo直接用jasyp
  • 给你们讲个笑话——低代码会取代程序员

    今天是正经男 我们严肃讨论一下一直以来争吵不休的取代问题 低代码开发平台 低代码技术会取代开发人员么 一 背景 低代码开发平台的普及 让很多公司对快速生成应用抱有很大期望 甚至有人认为 低代码开发平台未来会 干掉 开发者 这是真的吗 好久没
  • 压缩感知入门

    学习资料 网站http dsp rice edu cs 具有相关大量详细介绍的论文
  • idea 编译和构建 Java Web 项目后,没有生成 target 文件夹,且生成的 out 文件夹中没有 class 文件

    问题 在用 idea 编译和构建 Java Web 项目的时候 项目的目录中没有 target文件夹 生成的 out 文件夹中 没有 class 文件 办法 出现这种情况 很可能是因为未加载的模块出现在了 iml 文件中 导致生成 tage
  • Unity Animation -- 导入动画

    尽管Unity中的动画工具已经比较强大了 但对于非常复杂的或很长的动画 通常是由外部DCC创建 特别是对于角色动画来说 需要在动画过程中进行复杂的控制 因此我们通常需要将外部制作的动画导入到Unity中 动画能被共享吗 对于复杂的动画 制作
  • 阿里云-对象存储OSS

    大家好 我是 码赛客1024 今天我们一起来学习阿里云的对象存储服务OSS 一 介绍 阿里云对象存储OSS Object Storage Service 是一款海量 安全 低成本 高可靠的云存储服务 提供99 9999999999 12个9
  • 树的高度和深度

    用到树的数据结构时 经常会考虑树的高度和深度 但是lz总是搞混了 总虽然比较简单 就是个定义 记住就行了 但是因为长时间总是弄错 所以写一篇博文 加深一下印象 1 树的深度 树的深度可以这样理解 计算一个节点的深度 从根节点算起 记住从1开
  • LeetCode 之 Search for a Range

    题目链接 Search for a Range 对于一个按照升序排序的整数数组 找到给定目标值的开始位置和结束位置 且时间复杂度为O log n 如果在数组中找不到目标值 则返回 1 1 例如 数组为 5 7 7 8 8 10 和目标值8
  • PyTorch搭建LSTM实现时间序列预测(负荷预测)

    目录 I 前言 II 数据处理 III LSTM模型 IV 训练 V 测试 VI 源码及数据 I 前言 在上一篇文章深入理解PyTorch中LSTM的输入和输出 从input输入到Linear输出 中 我详细地解释了如何利用PyTorch来
  • qt中复制文件的功能

    1 利用qt来复制文件 首先新建个工程文件 拖入按钮 复制文件 2 需要引入的头文件如下 include
  • 六月学习记录

    六月学习记录 6 1 Android消息传递之Handler消息机制 four articles http www cnblogs com whoislcj p 5590615 html 6 2 代码审查工具phabricator 6 4
  • 7 Linux 内核移植

    一 编译 ST 的 Linux 系统 1 压缩源码 首先先下载 ST 官方源码 之前章节已经下载过了 直接输入以下命令 cd linux atk mpl stm32mp1 openstlinux 5 4 dunfell mp1 20 06
  • pycharm 2023.1.2 去掉版本控制

    pycharm 2023 1 2 去掉版本控制
  • 优秀程序员应该具备的12种能力

    1 编程语言能力 不用多说 作为合格的计算机程序员 精通一门语言是必须的 这种精通 不是说看了一本编程宝典 抄了几个程序就能说精通的 要靠长时间的积累 2 编码能力 我曾经看很多程序员写的代码 在同一个jsp或者java源文件里 出现了三种
  • WinForm控件Chart的图表类型

    将就看 后期再加目录导航2020 10 23 折线图 折线图通常使用一条线来连接一系列不同的数据点 这样的直线是直线 样条曲线或阶梯 折线图更简单 因此还可以使您可视化多个系列而不会像条形图那样重叠 以下是折线图的不同类型 折线图 折线图使
  • C\C++各种变量存放区域(代码、数据、堆、栈)

    C C 各种变量存放区域 代码 数据 堆 栈 文章目录 C C 各种变量存放区域 代码 数据 堆 栈 变量 数据 变量 数据存放区域 练习 请说明下面的指针分别指向什么位置 BSS Block Started by Symbol 区 为什么
  • numpy实现卷积两种方法

    暂时针对二维卷积 方法1 按定义计算 def numpy conv inputs myfilter h ori w ori inputs shape h k w k myfilter shape h new w new h ori h k
  • 如何控制小程序的tabBar的显示和隐藏

    1 使用wx hideTabBar 方法隐藏tabBar 2 使用wx showTabBar 方法显示tabBar 参考文档
  • 适配器模式代码示例

    package com example shipeiqi public interface ThreeElectricOutlet 用来刻画三相插座 public abstract void connectElectricCurrent p