java适配器模式

忘是亡心i 2024-03-30 17:34 146阅读 0赞

java适配器模式

  • 前言
  • 1,创建报表顶层接口
  • 2,更多其他报表接口
  • 3,实现其他报表接口
  • 4,创建适配器,适配器需实现报表顶层接口
  • 5,更新原始接口,添加适配器
  • 6,测试
  • 总结

前言

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。

例子: 原本系统只支持导出html报表文档,突然增加了需求,需要导出doc和xls文档。
这时可以使用适配器,接入原有的接口中,是原有的接口也能创建出doc和xls文档。
适配器负责产出doc或者xls


1,创建报表顶层接口

定义报表生成接口

  1. public interface ReportDownLoad {
  2. void creatReport(String type,String name);
  3. }

2,更多其他报表接口

  1. public interface EnyReportDownLoad {
  2. //创建doc
  3. public void createDoc(String name);
  4. //创建xls
  5. public void createXls(String name);
  6. }

3,实现其他报表接口

doc的实现

  1. public class DOCReportDownLoad implements EnyReportDownLoad{
  2. @Override
  3. public void createDoc(String name) {
  4. System.out.println("下载报表文件类型:"+"doc" + " "+name+"."+"doc");
  5. }
  6. @Override
  7. public void createXls(String name) {
  8. }
  9. }

xls的实现

  1. public class EXCELReportDownLoad implements EnyReportDownLoad{
  2. @Override
  3. public void createDoc(String name) {
  4. }
  5. @Override
  6. public void createXls(String name) {
  7. System.out.println("下载报表文件类型:"+"xls" + " "+name+"."+"xls");
  8. }
  9. }

4,创建适配器,适配器需实现报表顶层接口

  1. public class ReportAdapter implements ReportDownLoad{
  2. private EnyReportDownLoad report = null;
  3. //根据类型,返回不同的报表创建类
  4. public ReportAdapter(String type){
  5. if(type.equalsIgnoreCase("xls")){
  6. report = new EXCELReportDownLoad();
  7. }else if(type.equalsIgnoreCase("doc")){
  8. report = new DOCReportDownLoad();
  9. }
  10. }
  11. //根据类型,创建报表
  12. @Override
  13. public void creatReport(String type, String name) {
  14. if(type.equalsIgnoreCase("xls")){
  15. report.createXls(name);
  16. }else if(type.equalsIgnoreCase("doc")){
  17. report.createDoc(name);
  18. }
  19. }
  20. }

5,更新原始接口,添加适配器

  1. public class ReportDownLoadService implements ReportDownLoad{
  2. @Override
  3. public void creatReport(String type, String name) {
  4. //原有的html 报表创建
  5. if(type.equalsIgnoreCase("html")){
  6. System.out.println("下载报表文件类型:"+type + " "+name+"."+type);
  7. //新增适配其他两种报表创建方式
  8. }else if(type.equalsIgnoreCase("doc") || type.equalsIgnoreCase("xls")){
  9. ReportAdapter reportAdapter = new ReportAdapter(type);
  10. reportAdapter.creatReport(type,name);
  11. }
  12. }
  13. }

6,测试

  1. public static void main(String[] args) {
  2. ReportDownLoadService report = new ReportDownLoadService();
  3. report.creatReport("xls","我是报表1");
  4. report.creatReport("doc","我是报表2");
  5. report.creatReport("html","我是报表3");
  6. }

结果

  1. 下载报表文件类型:xls 我是报表1.xls
  2. 下载报表文件类型:doc 我是报表2.doc
  3. 下载报表文件类型:html 我是报表3.html

总结

主要解决: 主要解决在软件系统中,常常要将一些”现存的对象”放到新的环境中,期望它有新的功能,而新环境要求的接口是现对象不能满足的。
系统需要使用现有的类,而此类的接口不符合系统的需要

  1. 适配器继承或依赖已有的对象,实现想要的目标接口。

发表评论

表情:
评论列表 (有 0 条评论,146人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java适配器模式

    java适配器模式 前言 1,创建报表顶层接口 2,更多其他报表接口 3,实现其他报表接口 4,创建适配器,适配器需实现报表顶层接口

    相关 java适配器模式之类适配器

    一.类适配器模式 定义:适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,简单点理解就是平常所见的转接头,转换器之类的存在。 原理:通

    相关 Java 适配器模式

    什么是适配器模式:                   就是将一个类的接口转换成客户需要的另一个接口,它的职责是将本来不能在一起工作的类,可以一起工作。 适配器模式中的角色