首页 > 其他分享 >设计模式之适配器模式--新能源的发展

设计模式之适配器模式--新能源的发展

时间:2023-06-26 10:13:08浏览次数:65  
标签:-- 适配器 模式 手青 太阳能 设计模式 public

前言

本文主要讲述适配器模式,文中使用通俗易懂的案例,使你更好的学习本章知识点并理解原理,做到有道无术。

一.什么是适配器模式

适配器模式是23种设计模式中结构型模式的一种,将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。

二.生活中的适配器模式

1.太阳能

太阳能、风能、水能这类自然能是大自然赐予我们的礼物。比如说太阳能板就能够把太阳能转换成咱们的电能,然后给家里的电器使用,如果是没有太阳能板,我们是无法直接把太阳能供给电器使用的,这个太阳能板就像设计模式中的适配器模式一样。

2.见手青

云南人民很喜欢喜食菌类,但是不是每种菌类都可以吃,或者是有些菌类在没完全煮熟的时候是有毒的,比如见手青。生的见手青是会让人中毒的,而一些见手青通过烹饪完全熟透后是可以食用并且还是一道美味,不过得注意不是所有见手青的品种都可以煮熟食用。让有毒不可食用的见手青转换成熟透可食用无毒的见手青的这个工具就像设计模式中的适配器模式一样。

3.充电器

中国家庭所用的交流电标准电压为220V,如果用直接把插座里的电通往手机的话,可能会发生爆炸。这个时候我们就需要用到手机专用的充电器了,通过充电器,我们把220V的电流转换成手机适配的电流,电脑的充电器也是同样的原理。这个充电器就像是设计模式中的适配器模式一样。

三.适配器模式的实现

接下来以太阳能汽车举例,通过适配器模式来实现。先创建一个适配者类太阳类和目标抽象类客户需要的接口

package com.qianfeng.ran;

/*
 * @author:江帅
 *      适配者类:Adaptee
 *          太阳类
 */
public class Sun {
    //发散太阳能的行为
    public void behavior(){
        System.out.print("太阳能");
    }
}



/*
 * @author:江帅
 *      目标抽象类:Target
 *         客户需要的接口
 */
interface SolarToElectric {
    //把太阳能转换成电能
    void transition();
}

再创建一个适配器类太阳能板和客户类太阳能汽车

package com.qianfeng.ran;

/*
 * @author:江帅
 *      适配器类:Adapter
 *          太阳能板
 */
public class SolarPanel implements SolarToElectric {
    //太阳能类
    public Sun sun;
    public SolarPanel(Sun sun){
        this.sun = sun;
    }
    //太阳能转换成电能
    @Override
    public void transition() {
        //获取太阳能
        sun.behavior();
        System.out.print("转换成电能");
    }
}




/*
 * @author:江帅
 *      客户类:Client
 *          太阳能汽车
 */
class SolarCar {
    //发动机
    public void engine(SolarToElectric solarToElectric){
        //通过太阳能板获取能量
        solarToElectric.transition();
        System.out.print("发动汽车");
    }
}

最后我们通过适配器模式实现把太阳能转换成电能的过程

package com.qianfeng.ran;

/*
 * @author:江帅
 *          客户端
 */
public class Demo {
    public static void main(String[] args) {
        //创建一个太阳能板类,需要传递发散太阳能的太阳类
        SolarToElectric solarPanel = new SolarPanel(new Sun());
        //创建一个太阳能汽车
        SolarCar car = new SolarCar();
        //执行结果:
        //太阳能转换成电能发动汽车
        car.engine(solarPanel);
    }
}

四.配套视频

如果你不习惯阅读技术文章,或是对文中的技术概念不能很好地理解,可以来看看我们帮你筛选出的视频教程。戳这里


以上就是本文的全部内容啦,更多精彩可以关注小千,get技术知识点

标签:--,适配器,模式,手青,太阳能,设计模式,public
From: https://www.cnblogs.com/qian-fen/p/17504616.html

相关文章

  • 在 BI 工具 Tableau 中使用 databend
    Tableau是一款流行的数据可视化和业务智能工具。它提供了直观、交互式的方式来探索、分析和呈现数据,帮助用户更好地理解数据的意义和洞察。本教程帮助用户在Tableau中连接databend进行BI数据分析。DatabendjdbcTableau支持所有实现了JDBC协议的数据源,所以需要先准备......
  • 处理pubtabnet数据集代码
    1.先对该数据集做数据清洗importcv2importnumpyasnpimportjsonimportjsonlinesimportosdefiou(bbox1,bbox2):"""Calculatestheintersection-over-unionoftwoboundingboxes."""bbox1=[float(x)forxinbbox......
  • 腾讯企业邮箱-foxmail批量删除邮件,解决邮箱容量不足问题
    使用前提:线上环境、测试环境都使用foxmail作为接收邮箱,很容易导致企业邮箱容量不足(foxmail每个人免费的容量只有1G)。操作流程:1、登陆网页版的腾讯企业邮箱: 2、登陆成功后点击“邮箱首页-->文件夹和标签-->清空”,即可完成快速清空邮件,释放邮箱容量。 ......
  • 27.插入排序
    自从上次小桂子发现了冒泡排序后,他开始相信自己的聪明才智比伴读小书童居然要高,所以他更加热衷于排序算法研究了,没事的时候,时不时找几个宫女演练一下,这时他又发现了一个新的排序方式,对于一下宫女们的队列:1.首先,我们只考虑第一个元素,从第一个元素171开始,该元素可以认为已经被排......
  • Request获取请求数据-请求头&请求体
       ......
  • 小程序中使用vant weapp
    前提:其实vant官方的步骤写的很详细但是在我照着一步步走了之后发现还是用不了有报错因此详细扩充一下 1.在项目文件夹下开启终端执行npminit2.再执行npminstall(这后面其实就是官网的内容了主要是1、2条导致的我的报错)3.通过NPM的方式安装npmi@vant/w......
  • 后端分页
    offset可从0开始/***利用subList方法进行分页*@paramlist分页数据*@paramlimit页面大小*@paramoffset当前页面*/publicstaticList<?>pageBySubList(List<?>list,intlimit,intoffset)throwsException{intto......
  • mysql锁
    1.表锁:locktablest1read,t2write;如果在某个线程A中执行这个语句,则其他线程【写t1】,【读写t2】的语句都会被阻塞。同时,线程A在执行unlocktables之前,也只能执行【读t1】,【读写t2】的操作。 2.行锁1)在InnoDB事务中,行锁是在需要的时候才加上的,但并不是不......
  • React实战--利用甘特图和看板,强化Paas平台应用
    概述这是一篇React在kintone上的实战,我们需要利用看板和甘特图来来强化项目管理app。另外这次用到了webpack,想了解基本配置思路的可以看这里项目地址GitHub-kintone-samples/SAMPLE-kintone-ganttchart-kanban-cn:projectmanagerforkintone,usingGanttandKanban效......
  • IE7下图片缩放失真fix
    此篇主要是介绍ie7下图片被拉伸导致的锯齿 解决方法: 增加这个样式规则  -ms-interpolation-mode:bicubic语法: -ms-interpolation-mode  nearest-neighbor   ------usenearestneighborinterpolationmodebicubic            ------use......