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

axure做网站流程百度广告代理

axure做网站流程,百度广告代理,曲靖 曲靖网站建设软件(app)开发,罗湖外贸网站建设目录 一、适配器模式是什么?二、示例【[来源](https://refactoringguru.cn/design-patterns/adapter)】1 第三方依赖 (接口A 数据A)2 客户端3 方钉转圆钉的适配器(数据B) 三、适配器(xxxAdapter&#xff0…

目录

  • 一、适配器模式是什么?
  • 二、示例【[来源](https://refactoringguru.cn/design-patterns/adapter)】
    • 1 第三方依赖 (接口A + 数据A)
    • 2 客户端
    • 3 方钉转圆钉的适配器(数据B)
  • 三、适配器(xxxAdapter)怎么写?

一、适配器模式是什么?

  • 适配器模式是一种结构型设计模式, 它能使接口不兼容的对象能够相互合作。
  • 背景1:
    • 客户端通过接口A处理数据A,但是用户可能传入数据B。
    • 一种解决方案是:为数据B实现接口B。但这样做的话,需要修改客户端的代码(尽量不修改上层代码)。而且接口B不一定好实现。
    • 另一种解决方案是:提供适配器,让数据B去适配接口A。
  • 背景2:
    • 客户端传入数据A,然而,系统中只有处理数据B的接口B。
    • 因此,需要提供适配器,让数据A去适配接口B。
  • 类比:生活中,iphone用的是Lightning接口,而很多充电器已经是type-c了。这就需要Lightning转type-c的适配器。

二、示例【来源】

  • 需求:判断圆洞能否匹配圆钉(假设这是第三方依赖提供的能力)
    • 但是用户还会传入的是方钉(这怎么复用呢?)

1 第三方依赖 (接口A + 数据A)

接口A:RoundHole::fits
数据A:RoundPeg

@Data
@AllArgsConstructor
public class RoundHole {private double radius;public boolean fits(RoundPeg peg) {return this.radius >= peg.getRadius();}
}@Data
@NoArgsConstructor
@AllArgsConstructor
public class RoundPeg {private double radius;
}

2 客户端

public class Application {public static void main(String[] args) {// 判断圆洞能否匹配圆钉(假设这是第三方依赖提供的能力)RoundHole roundHole = new RoundHole(2D);List<RoundPeg> roundPegs = ImmutableList.of(new RoundPeg(1D),new RoundPeg(3D));roundPegs.stream().forEach(roundPeg -> {if (roundHole.fits(roundPeg)) {System.out.println(String.format("半径为%.2f的圆钉可以插入半径为%.2f的圆洞种", roundPeg.getRadius(), roundHole.getRadius()));} else {System.out.println(String.format("半径为%.2f的圆钉不能插入半径为%.2f的圆洞种", roundPeg.getRadius(), roundHole.getRadius()));}});}
}

3 方钉转圆钉的适配器(数据B)

@Data
@AllArgsConstructor
public class SquarePeg {private double width;
}@Data
@NoArgsConstructor
@AllArgsConstructor
public class SquarePegAdapter extends RoundPeg {private SquarePeg squarePeg;/*** public boolean fits(RoundPeg peg) {*     return this.radius >= peg.getRadius();* }** 从客户端使用方式可知,SquarePegAdapter需要继承RoundPeg,并且覆写getRadius()方法。*/@Overridepublic double getRadius() {return squarePeg.getWidth() * Math.sqrt(2) / 2;}
}
  • 客户端代码:
public class Application {public static void main(String[] args) {// 判断圆洞能否匹配圆钉(假设这是第三方依赖提供的能力)RoundHole roundHole = new RoundHole(2D);List<RoundPeg> roundPegs = ImmutableList.of(new RoundPeg(1D),new RoundPeg(3D));roundPegs.stream().forEach(roundPeg -> {if (roundHole.fits(roundPeg)) {System.out.println(String.format("半径为%.2f的圆钉可以插入半径为%.2f的圆洞种", roundPeg.getRadius(), roundHole.getRadius()));} else {System.out.println(String.format("半径为%.2f的圆钉不能插入半径为%.2f的圆洞种", roundPeg.getRadius(), roundHole.getRadius()));}});// 但是用户还会传入的是方钉(这怎么复用呢?)List<SquarePeg> squarePegs = ImmutableList.of(new SquarePeg(1D),new SquarePeg(3D));SquarePegAdapter squarePegAdapter = new SquarePegAdapter();squarePegs.stream().forEach(squarePeg -> {squarePegAdapter.setSquarePeg(squarePeg);if (roundHole.fits(squarePegAdapter)) {System.out.println(String.format("半径为%.2f的方钉可以插入半径为%.2f的圆洞种", squarePeg.getWidth(), roundHole.getRadius()));} else {System.out.println(String.format("半径为%.2f的方钉不能插入半径为%.2f的圆洞种", squarePeg.getWidth(), roundHole.getRadius()));}});}
}/**
半径为1.00的圆钉可以插入半径为2.00的圆洞中
半径为3.00的圆钉不能插入半径为2.00的圆洞中
半径为1.00的方钉可以插入半径为2.00的圆洞中
半径为3.00的方钉不能插入半径为2.00的圆洞中
*/

三、适配器(xxxAdapter)怎么写?

  • 思路:
  • (1)从客户端代码入手,确定什么是不变的。
public boolean fits(RoundPeg peg) {return this.radius >= peg.getRadius();
}

如果fits()方法不变,那么就得将SquarePeg适配成RoundPeg

  • (2)确定被适配对象
    • SquarePeg,方法取名为SquareAdapter
  • (3)实现SquareAdapter
public class SquarePegAdapter extends RoundPeg {private SquarePeg squarePeg;@Overridepublic double getRadius() {return squarePeg.getWidth() * Math.sqrt(2) / 2;}
}
http://www.mnyf.cn/news/41044.html

相关文章:

  • 做网站为什么要用php框架北京官方seo搜索引擎优化推荐
  • ps做网站界面推广软件的渠道有哪些
  • 网站开发建设公司360搜索引擎
  • pc网站建设的三大条件seo优化咨询
  • 南京企业网站设计制作国内最好用免费建站系统
  • 南阳专业网站建设价格soso搜搜
  • 西三旗网站建设百度广告屏蔽
  • 怎么使用模板建设网站百度推广登录后台
  • 有没有大人和小孩做的网站抖音推广合作方式
  • 云南网站建设快速优化搜索引擎推广排名
  • 网站备案成功然后怎么做外贸营销网站建站
  • 怎么样购买网站空间宁波seo排名外包
  • 想换掉做网站的公司seo是怎么优化
  • 谷歌英文网站推广页优化软件
  • 杭州搭建网站星巴克网络营销案例分析
  • 网站分哪些种类外贸网站
  • 国外做批发的网站百度学术论文官网入口
  • 三只松鼠网站开发模板seo新人培训班
  • 网站中flash怎么做站长工具使用方法
  • 政府门户网站建设最好的免费建站网站
  • 免费创建网站平台有哪些网店营销策略有哪些
  • 找网站开发新乡搜索引擎优化
  • 服务佳的广州网站建设seo外链推广平台
  • 昆山网站建设兼职怎么在百度上免费做广告
  • 网站建设的设计总结重庆seo研究中心
  • 滕州助企网站建设网络推广常见的方法
  • 昆明网站空间外呼系统电销
  • 网站 空间 备案排名函数rank怎么用
  • 免费 网站管理系统百度搜索风云排行榜
  • 视频网站做推广有没有效果营销推广的作用