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

bt搜索引擎下载北京优化seo

bt搜索引擎下载,北京优化seo,十大新零售公司,bc网站搭建开发制作目录 一、适配器模式 一句话概括结构式模式 1.1、适配器模式概述 1.2、案例 1.2.1、类适配器模式实现案例 1.2.2、对象适配器 1.2.3、接口适配器 1.3、优缺点(对象适配器模式) 1.4、应用场景 一、适配器模式 一句话概括结构式模式 教你将类和对…

目录

一、适配器模式

一句话概括结构式模式

1.1、适配器模式概述

1.2、案例

1.2.1、类适配器模式实现案例

1.2.2、对象适配器

1.2.3、接口适配器

1.3、优缺点(对象适配器模式)

1.4、应用场景


一、适配器模式


一句话概括结构式模式

教你将类和对象结合再一起形成一个更强大的结构.

1.1、适配器模式概述

将一个类的接口转换成客户希望的另一个接口,使得原本不兼容的接口能一起工作.

比如,如果你使用的是苹果手机,那么就意味着充电器的充电口也是苹果标准的,而你现在只有一个 type-c 插孔的插座能充电,因此就需要一个转换器(一头type-c,另一头 苹果插头),就可以让原本不兼容的 苹果插头 一起工作.

适配器模式包含以下主机角色:

  1. 目标接口:当前客户所期待的接口,它可以是抽象类或者接口(上述的 苹果插头).
  2. 适配者类:是被访问的现存组件库中的接口(上述的 type-c).
  3. 适配器类:是一个转换器,通过继承或引用目标接口,实现适配者类的所有方法,就可以实现转换效果.

适配器模式分为 类适配器模式、对象适配器模式 ,其中类适配器耦合度最高(不符合合成/聚合复用原则),且要求程序员了解现有组件库的内部结构,因此应用较少.

还有一种模式叫 接口适配器模式,是对对象适配器的扩展.

1.2、案例

现有一台电脑,只能读取 SD 卡,而我现在只有一个 TF 卡,因此就需要使用适配器模式. 创建一个读卡器,将 TF 卡中的内容读取出来.

1.2.1、类适配器模式实现案例

类适配器只需要我们继承目标接口,实现适配者接口的所有方法即可.

/*** 目标接口: TF 卡*/
public interface TFCard {/*** 读取 TF 卡* @return*/String readTF();/*** 写入 TF 卡*/void writeTF(String msg);}
/*** 目标接口实现类*/
public class TFCardImpl implements TFCard{@Overridepublic String readTF() {String msg = "tf card readTF: hello!";return msg;}@Overridepublic void writeTF(String msg) {System.out.println("tf card writeTF: hello!");}}
/*** 适配者接口: SD 卡*/
public interface SDCard {/*** 读取 SD 卡* @return*/String readSD();/*** 写入 SD 卡*/void writeSD(String msg);}
/*** 适配者实现类: SD 卡实现类*/
public class SDCardImpl implements SDCard {@Overridepublic String readSD() {String msg = "sd card readTF: hello!";return msg;}@Overridepublic void writeSD(String msg) {System.out.println("sd card writeTF: " + msg);}}
/*** 适配器:SD 兼容 TF*/
public class SDAdapterTF extends TFCardImpl implements SDCard{@Overridepublic String readSD() {System.out.println("adapter read tf card");return readTF();}@Overridepublic void writeSD(String msg) {System.out.println("adapter write tf card");writeTF(msg);}}
/*** 电脑类*/
public class Computer {public String readSD(SDCard sdCard) {if(sdCard == null) {throw new NullPointerException("sd card null");}return sdCard.readSD();}}
    public static void main(String[] args) {//1.创建一个电脑类Computer computer = new Computer();//3.通过适配器从电脑中读取 TF 卡的数据SDAdapterTF adapter = new SDAdapterTF();String msg = computer.readSD(adapter);System.out.println(msg);}

1.2.2、对象适配器

对象适配器,相比于 类适配器,更符合 合成/聚合复用原则(持有新对象的引用,而不是通过继承来达到复用目的).  也就是说,它是通过持有目标接口的引用(tf 卡接口的引用),重写 适配者接口 的所有方法实现的 .  

/*** 目标接口: TF 卡*/
public interface TFCard {/*** 读取 TF 卡* @return*/String readTF();/*** 写入 TF 卡*/void writeTF(String msg);}
/*** 目标接口实现类*/
public class TFCardImpl implements TFCard {@Overridepublic String readTF() {String msg = "tf card readTF: hello!";return msg;}@Overridepublic void writeTF(String msg) {System.out.println("tf card writeTF: hello!");}}

/*** 适配者接口: SD 卡*/
public interface SDCard {/*** 读取 SD 卡* @return*/String readSD();/*** 写入 SD 卡*/void writeSD(String msg);}
/*** 适配者实现类: SD 卡实现类*/
public class SDCardImpl implements SDCard {@Overridepublic String readSD() {String msg = "sd card readTF: hello!";return msg;}@Overridepublic void writeSD(String msg) {System.out.println("sd card writeTF: " + msg);}}
/*** 适配器:SD 兼容 TF*/
public class SDAdapterTF implements SDCard {private TFCard tfCard;public SDAdapterTF(TFCard tfCard) {this.tfCard = tfCard;}@Overridepublic String readSD() {System.out.println("adapter read tf card");return tfCard.readTF();}@Overridepublic void writeSD(String msg) {System.out.println("adapter write tf card");tfCard.writeTF(msg);}}
/*** 电脑类*/
public class Computer {public String readSD(SDCard sdCard) {if(sdCard == null) {throw new NullPointerException("sd card null");}return sdCard.readSD();}}
public class Client {public static void main(String[] args) {//1.创建一个电脑类Computer computer = new Computer();//3.通过适配器从电脑中读取 TF 卡的数据SDAdapterTF adapter = new SDAdapterTF(new TFCardImpl());computer.readSD(adapter);}}

1.2.3、接口适配器

当我们不希望实现一个适配者接口(sd 卡接口)中的所有方法时,可以创建一个抽象类 Adapter,实现所有方法(不用实现方法内容).此时我们只需要继承该抽象类,在重写我们需要的方法即可.

实现前两个适配器中,就一直没有使用 writeSD 方法,因此这里就不实现此方法.

/*** 目标接口: TF 卡*/
public interface TFCard {/*** 读取 TF 卡* @return*/String readTF();/*** 写入 TF 卡*/void writeTF(String msg);}
/*** 目标接口实现类*/
public class TFCardImpl implements TFCard {@Overridepublic String readTF() {String msg = "tf card readTF: hello!";return msg;}@Overridepublic void writeTF(String msg) {System.out.println("tf card writeTF: hello!");}}
/*** 适配者接口: SD 卡*/
public interface SDCard {/*** 读取 SD 卡* @return*/String readSD();/*** 写入 SD 卡*/void writeSD(String msg);}
/*** 适配者实现类: SD 卡实现类*/
public class SDCardImpl implements SDCard {@Overridepublic String readSD() {String msg = "sd card readTF: hello!";return msg;}@Overridepublic void writeSD(String msg) {System.out.println("sd card writeTF: " + msg);}}
public abstract class Adapter implements SDCard {@Overridepublic void writeSD(String msg) {}@Overridepublic String readSD() {return null;}}
public class SDAdapterTF extends Adapter implements SDCard{private TFCard tfCard;public SDAdapterTF(TFCard tfCard) {this.tfCard = tfCard;}@Overridepublic String readSD() {System.out.println("adapter read tf card");return tfCard.readTF();}
}
/*** 电脑类*/
public class Computer {public String readSD(SDCard sdCard) {if(sdCard == null) {throw new NullPointerException("sd card null");}return sdCard.readSD();}}
public class Client {public static void main(String[] args) {//1.创建一个电脑类Computer computer = new Computer();//2.通过适配器从电脑中读取 TF 卡的数据SDAdapterTF sdAdapterTF = new SDAdapterTF(new TFCardImpl());String msg = computer.readSD(sdAdapterTF);System.out.println(msg);}}

1.3、优缺点(对象适配器模式)

优点

1. 适配现有类,且不修改类:在不改变现有类的基础上,实现现有类和目标类的接口的匹配.

2. 符合 合成/聚合 复用原则:持有引用,而不继承.

3. 符合开闭原则:如果引入新的目标接口,只需要在适配器类中进行扩展,不需要修改原代码.

缺点:

增加复杂性:编写适配器类时,要考虑全面,包括适配者和目标类.

1.4、应用场景

1. 以前开发的系统中存在满足当前业务所需要的类,但是接口和当前业务所需接口不一致.

2. 第三方提供的组件,但是组件接口定义和自己要求的接口定义不同.

http://www.tj-hxxt.cn/news/68642.html

相关文章:

  • wordpress 豆瓣fm宁波seo推广服务电话
  • 阿里巴巴的网站怎么做的中文域名
  • 东莞做网站seo社交网络推广方法
  • 网站制作怎么把网站交付广州seo网站排名
  • 编程到底是学些什么百度推广账户优化方案
  • 定制网站开发多少钱seo网站关键词排名优化
  • 西安成品网站建设建站
  • 政府门户网站建设管理百度推广登录页面
  • 英文字体展示网站推荐他达拉非
  • 访问国外网站快的dns短视频seo代理
  • 制作灯笼的手工做法简单漂亮网站seo策划方案
  • 做网站月入过万的经验长沙seo咨询
  • 秦皇岛建委网站编写网站
  • 网站运营托管网络推广怎样做
  • 南京网站开发南京乐识专业网络营销有什么
  • 东营哪里有做网络推广的seo优化网
  • 中央纪委网站 举报 要这么做才有效销售crm客户管理系统
  • 网站后台程序开发教程域名收录批量查询
  • 重庆涪陵网站设计公司推荐肇庆网站推广排名
  • 烟台哪家公司可以做网站网站关键词挖掘
  • 动画设计专业大学排名seo课程总结
  • 西安+医疗网站建设关键词排名怎么快速上去
  • 培训管理平台广西seo关键词怎么优化
  • 太原网站建设工作室深圳网站建设
  • 做便民工具网站网站建站教程
  • 白石洲网站建设河南平价的seo整站优化定制
  • php租车网站源码企业网站排名优化方案
  • wordpress增加访问速度seo sem是指什么意思
  • 网站css不调用了网络营销的核心是
  • shopex 如何看 网站后台免费注册网址