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

如何做微信ppt模板下载网站营销网络营销

如何做微信ppt模板下载网站,营销网络营销,合肥市建设工程市场信息价网站,如何自己建网址目录 一、适配器模式 一句话概括结构式模式 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.mmbaike.com/news/86822.html

相关文章:

  • 彩票网站可以做哪些活动湖南正规关键词优化
  • 动画设计专业介绍安徽网络seo
  • 对政府网站建设的整改报告百度热搜广告设计公司
  • 国内做的好网站有哪些营销推广计划怎么写
  • 文字网站居中百度allin 人工智能
  • 网站流量用完了报个计算机培训班多少钱
  • 浏览器网页游戏百度谷歌seo优化
  • 做网站一月工资公司网站推广怎么做
  • 关于怎么做网站高州新闻 头条 今天
  • 网站管理助手哪个好用最有吸引力的营销模式
  • 潍坊网站建设定制江西短视频seo搜索报价
  • 有哪些免费的视频网站广州seo
  • 主流网站开发工具怎么推广公司网站
  • wordpress简单用户中心锦州seo推广
  • 网站开发专业感想制作公司网站大概多少钱
  • 阜阳集团网站建设无锡seo关键词排名
  • 个人网站icp广州seo公司哪个比较好
  • 做网站IP淘宝直通车
  • 地产网站互动营销网络营销的策略包括
  • 有哪些网站做国外生意的推广营销策划方案
  • 做设计什么兼职网站中国十大小说网站排名
  • 网页建设推荐关键字排名优化工具
  • 网站logo怎么做动态图短信营销
  • 网站支付接口怎么做百度域名收录
  • 网站制作报价是否合法推广赚佣金的软件排名
  • 南宁网站开发公司seo综合查询怎么关闭
  • 青海省建设网站价格低线上培训平台
  • eclipse 网站开发教程打开一个网站
  • 网站美工建设意见搜什么关键词能找到网站
  • 网站建市场营销推广策划方案