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

企业网站建设实训网站建设哪家最好用

企业网站建设实训,网站建设哪家最好用,wordpress vuln,建设教育网站的目的一、概述 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 二、适用性 1.你想使用一个已经存在的类,而它的接口不符合你的需求。 2.你想创建一个可以复用的类,该类可以与其他不…

一、概述

将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

二、适用性

1.你想使用一个已经存在的类,而它的接口不符合你的需求。

2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口 可能不一定兼容的类)协同工作。

3.(仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行 子类化以匹配它们的接口。对象适配器可以适配它的父类接口。

三、参与者

1.Target 定义Client使用的与特定领域相关的接口。

2.Client 与符合Target接口的对象协同。

3.Adaptee 定义一个已经存在的接口,这个接口需要适配。

4.Adapter 对Adaptee的接口与Target接口进行适配

四、类图

五、示例

Target接口

public interface Target {void adapteeMethod();void adapterMethod();
}

 Adaptee类

public class Adaptee {public void adapteeMethod() {System.out.println("Adaptee method!");}
}

适配器类Adapter

public class Adapter implements Target {private Adaptee adaptee;public Adapter(Adaptee adaptee){this.adaptee = adaptee;}@Overridepublic void adapteeMethod() {adaptee.adapteeMethod();}@Overridepublic void adapterMethod() {System.out.println("Adapter method!");}
}

测试类

public class TestAdapter {@Testpublic void ruleTest() {Target target = new Adapter(new Adaptee());target.adapteeMethod();target.adapterMethod();}
}

测试结果

Connected to the target VM, address: '127.0.0.1:3881', transport: 'socket'
Adaptee method!
Adapter method!
Disconnected from the target VM, address: '127.0.0.1:3881', transport: 'socket'

 六、实践

文件中心服务开发。

文件操作适配相关总体目录

自研文件服务相关

/*** @author* @createTime 2021年01月15日* @Description 自研文件服务接口*/
public interface IFileOperateService {/*** 上传文件* @param dto 参数* @return 文件id*/String upload(FileUploadDto dto);/*** 流式上传文件* @param streamDto 参数* @return 文件id*/String upload4Stream(FileUploadForStreamDto streamDto);/*** 下载文件* @param fileId 文件id* @return 结果*/FileDownloadDto download(String fileId);/*** 流式下载文件* @param fileId 文件id* @return 结果*/FileDownloadForStreamDto download4Stream(String fileId);
}

 实现

/*** @author* @createTime 2021年01月15日* @Description 自研文件服务实现*/
public class CustomFileOperateServiceImpl implements IFileOperateService {@Overridepublic String upload(FileUploadDto dto) {System.out.println("自研文件服务上传文件...");return null;}@Overridepublic String upload4Stream(FileUploadForStreamDto streamDto) {System.out.println("自研文件服务流式上传文件...");return null;}@Overridepublic FileDownloadDto download(String fileId) {System.out.println("自研文件服务下载文件...");return null;}@Overridepublic FileDownloadForStreamDto download4Stream(String fileId) {System.out.println("自研文件服务流式下载文件...");return null;}
}

第三方文件相关

/*** @author* @createTime 2021年01月15日* @Description 第三方文件服务接口*/
public interface IThirdPartyFileOperateService {/*** 上传文件* @param dto 参数* @return 文件id*/String upload(FileUploadDto dto);/*** 流式上传文件* @param streamDto 参数* @return 文件id*/String upload4Stream(FileUploadForStreamDto streamDto);/*** 下载文件* @param fileId 文件id* @return 结果*/FileDownloadDto download(String fileId);/*** 流式下载文件* @param fileId 文件id* @return 结果*/FileDownloadForStreamDto download4Stream(String fileId);
}

实现

/*** @author* @createTime 2021年01月15日* @Description 阿里oss服务*/
public class AliOssFileOperateServiceImpl implements IThirdPartyFileOperateService {@Overridepublic String upload(FileUploadDto dto) {System.out.println("oss文件服务上传文件...");return null;}@Overridepublic String upload4Stream(FileUploadForStreamDto streamDto) {System.out.println("oss文件服务流式上传文件...");return null;}@Overridepublic FileDownloadDto download(String fileId) {System.out.println("oss文件服务下载文件...");return null;}@Overridepublic FileDownloadForStreamDto download4Stream(String fileId) {System.out.println("oss文件服务流式下载文件...");return null;}
}

声明一个统一的适配标准

/*** @author * @createTime 2021年01月15日* @Description*/
public interface FileOperateAdaptee extends IThirdPartyFileOperateService {
}

适配器-CustomFileOperateAdaptor

/*** @author * @createTime 2021年01月15日* @Description*/
public class CustomFileOperateAdaptor implements FileOperateAdaptee {private final IFileOperateService customFileOperationService;public CustomFileOperateAdaptor(IFileOperateService customFileOperationService) {this.customFileOperationService = customFileOperationService;}@Overridepublic String upload(FileUploadDto dto) {return customFileOperationService.upload(dto);}@Overridepublic String upload4Stream(FileUploadForStreamDto streamDto) {return customFileOperationService.upload4Stream(streamDto);}@Overridepublic FileDownloadDto download(String fileId) {return customFileOperationService.download(fileId);}@Overridepublic FileDownloadForStreamDto download4Stream(String fileId) {return customFileOperationService.download4Stream(fileId);}
}

适配器-MultiWriteAndReadCustomOperateAdaptor

/*** @author* @createTime 2021年01月15日* @Description 上传时多写,读取时优先从自研文件服务中读取的适配器*/
public class MultiWriteAndReadCustomOperateAdaptor extends AbstractFileMultiWriteOperateAdaptor {public MultiWriteAndReadCustomOperateAdaptor(IFileOperateService fileOperationService, IThirdPartyFileOperateService thirdPartyFileOperationService) {super(fileOperationService, thirdPartyFileOperationService);}@Overridepublic String upload(FileUploadDto dto) {System.out.println("MultiWriteAndRead文件服务上传文件...");return null;}@Overridepublic String upload4Stream(FileUploadForStreamDto streamDto) {System.out.println("MultiWriteAndRead文件服务流式上传文件...");return null;}@Overridepublic FileDownloadDto download(String fileId) {System.out.println("MultiWriteAndRead文件服务下载文件...");return null;}@Overridepublic FileDownloadForStreamDto download4Stream(String fileId) {System.out.println("MultiWriteAndRead文件服务流式下载文件...");return null;}
}

文件服务工厂-FileOperateFactory

/*** @author* @createTime 2021年01月15日* @Description 文件服务工厂*/
public class FileOperateFactory {public static IThirdPartyFileOperateService getDefault() {return getInstance(EnumFileOperateType.MULTI_WRITE_AND_READ_FROM_CUSTOM);}/*** 获取对应的文件服务实例* @param operationType 类型* @return 实例*/public static IThirdPartyFileOperateService getInstance(EnumFileOperateType operationType) {switch (operationType) {case OSS:return new AliOssFileOperateServiceImpl();case CUSTOM:return  new CustomFileOperateAdaptor(new CustomFileOperateServiceImpl());case MULTI_WRITE_AND_READ_FROM_CUSTOM:return  new MultiWriteAndReadCustomOperateAdaptor(new CustomFileOperateServiceImpl(),new AliOssFileOperateServiceImpl());default:throw new IllegalArgumentException("storageType is not support");}}
}

自测

@Test
public void fileTest() {IThirdPartyFileOperateService operateService =            FileOperateFactory.getInstance(EnumFileOperateType.MULTI_WRITE_AND_READ_FROM_CUSTOM);operateService.upload(new FileUploadDto());operateService.download("this is fileId");
}

自测结果

Connected to the target VM, address: '127.0.0.1:6502', transport: 'socket'
MultiWriteAndRead文件服务上传文件...
MultiWriteAndRead文件服务下载文件...
Disconnected from the target VM, address: '127.0.0.1:6502', transport: 'socket'

http://www.yayakq.cn/news/869179/

相关文章:

  • 淘宝客 备案 网站名称友情链接什么意思
  • 做政协网站软件的公司鄂伦春网站建设
  • 手机端网站推广phpcmsv9中英文网站
  • 可以做分销的网站在pc端预览手机网站
  • 链家在线网站是哪个公司做的商城网站大全
  • 苏州华亭建设工程有限公司网站沧州网站建设公司排名
  • 网站建设项目标书手机编程免费软件app
  • 竞价单页网站模板深圳横岗网站建设
  • 网站功能插件创业计划书建设网站
  • 湖南建设厅网站证书查询wordpress+培训模板下载
  • 网站控制面板wp-config.php wordpress
  • 中国室内设计联盟官方网站入口中国银行官网登录入口
  • 长沙电商运营培训河南企业网站优化外包
  • 赛扬e3300做网站网站后台难做吗
  • 泰州网站制作建设网站开发设计素材
  • 龙华网站建设的基本步骤东莞网站建设营销平台的
  • 网站建设储蓄卡学生管理系统 静态网站源码
  • 学校官方网站建设做淘客的网站有哪些
  • 浏览器收录网站东营信息发布平台
  • 广州微信网站建设包头网站建设熊掌号
  • 聊天软件开发哪个好点西安seo技术培训班
  • 青岛专业做网站优化网站建设制作教程
  • 做公司网站图片算是商用吗电商运营培训大概多少学费
  • 河南便宜网站建设费用百度关键词优化排名
  • 无锡seo网站推广费用wordpress网站多层循环调用文章
  • 淘宝做网站 评价话语推荐网站空间购买
  • 徐州网站开发花灯彩灯制作公司
  • 企业展示型网站建设山东菏泽建设银行网站
  • 济南自适应网站建设百度移动
  • 网站开发目标开题报告百姓网个人征婚