完全解耦:降低代码的限制性,是同一代码能够用到更多的程序中

1 packageinterfaces.interfaceprocessor;2 import staticnet.mindview.util.Print.print;3

4 interfaceProcessor {5 String name();6 Object process(Object input);7 }8 public classApply{9 public static voidprocess(Processor p, Object s) {10 print("Using Processor "+p.name());11 print(p.process(s));12 }13 }

上述方法代码Apply.process()打印出进程的名字和进程的过程。只要符合此要求的都可以利用这个代码

1 packageinterfaces.interfaceprocessor;2 import static net.mindview.util.Print.*;3

4 public abstract class StringProcessor implementsProcessor {5 publicString name() {6 returngetClass().getSimpleName();7 }8 public abstractString process(Object input);9 public static String s = "if she weights the same as duck";10 public static voidmain(String[] args) {11 Apply.process(newUpcase(), s);12 }13 }14 class Upcase extendsStringProcessor{15 publicString process(Object input) {16 return((String)input).toUpperCase();17 }18 }

在利用Apply.process()方法时,需要一个适配器方法,本例中StringProcessor为字符串适配器,是接口Processor的实现

由于Apply.process()方法接收的参数为Proessor类型,因此必须要一个Processor接口的实现,我们把它称作适配器,该适配器也是接口Processor的实现,这样该适配器的类型也是Processor

这样就可以把该适配器的内容传到Apply.process()方法中(Apply.process(new Upacase(), s))

packageinterfaces.interfaceprocessor;classChacaterPairSwapper{publicString swap(String s) {

StringBuilder sb= newStringBuilder(s);for(int i=0; i

sb.setCharAt(i, c2);

sb.setCharAt(i+1,c1);

}returnsb.toString();

}

}class SwapAdapator implementsProcessor{

ChacaterPairSwapper cps= newChacaterPairSwapper();publicString name() {return ChacaterPairSwapper.class.getSimpleName();

}publicObject process(Object input) {returncps.swap((String)input);

}

}public classE11_Swap {public static voidmain(String[] args) {

Apply.process(new SwapAdapator(), "1234");

}

}

本例也是利用了Apply.process()方法,首先写一个交换一对字符的方法,再写了一个此方法的适配器,使其适配Apply.process()方法

这就是完全解耦,通过适配器,使得更多的代码能够用到同一方法

java 完全解耦_java-完全解耦相关推荐

  1. 用java的io做一个代码计数器,如何制作Java页面计数器_java

    大庆采油六厂采油工艺研究所 王兵 王波 常常逛WWW的人,一定对许多起始页上的计数器感兴趣.每当你光临某个站点的起始页时,它的计数器就很亲切地告诉你,从某年某月某日开始,你是第几位光临的人.你可能也想 ...

  2. 解耦控制matlab,解耦控制所谓解耦控制系统.ppt

    解耦控制所谓解耦控制系统 典型问题- 跟踪与解耦 跟踪问题 问题描述 其中w为干扰向量,F为已知的干扰分布矩阵.许多工程问题 中希望受控系统实现以下任务:对于给定的某一个连续信号 yr(t),控制系统 ...

  3. 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目

    课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...

  4. 改进YOLOv5 | 头部解耦 | 将YOLOX解耦头添加到YOLOv5 | 涨点杀器

    改进YOLOv5 | 头部解耦 | 将YOLOX解耦头添加到YOLOv5 论文地址:https://arxiv.org/abs/2107.08430 文章目录 改进YOLOv5 | 头部解耦 | 将Y ...

  5. 【源码+教程】Java桌球游戏_Java初级项目_Java练手项目_Java项目实战_Java游戏开发

    今天分享的Java开源游戏项目是桌球游戏,初学者也可以用来练习喔~课程详细讲解了一个桌球游戏的编写思路和流程,即使你刚学Java没多久,也可以跟随该教程视频完成属于你自己的桌球游戏!同时,还可以加深和 ...

  6. 【源码+项目部署】Java课程设计项目_Java人力资源管理系统

    对就业和毕业都有帮助的Java实战项目来咯--人力资源管理系统! 人力资源管理系统 |Java项目2小时上手编写_源码+数据库拿走不谢!Java实战项目_Java开发https://www.bilib ...

  7. java 注解开发 解耦_Java提升七:注解

    1.为何要使用注解? 在各种框架中,经常使用XML文件作为配置文件,从而实现框架中程序编写的解耦.但是随着开发的内容越来越复杂,对于框架中的所有对象进行XML配置将会使配置文件的维护成本急剧增加. 注 ...

  8. java完全解耦_java-完全解耦 - osc_bc7dotjc的个人空间 - OSCHINA - 中文开源技术交流社区...

    完全解耦:降低代码的限制性,是同一代码能够用到更多的程序中 1 packageinterfaces.interfaceprocessor;2 import staticnet.mindview.uti ...

  9. java完全解耦_java-完全解耦

    完全解耦:降低代码的限制性,是同一代码能够用到更多的程序中 1 packageinterfaces.interfaceprocessor;2 import staticnet.mindview.uti ...

最新文章

  1. python爬虫实验报告_python爬虫实验
  2. (转)线段树的区间更新
  3. 如何区分ABS和PVC光纤槽道?
  4. 公文字体字号标准2020_零秒处理公文格式的三个要点
  5. php函数库快速记忆法_PHP速成大法
  6. python做的游戏可以导出吗_Python for RenderDoc批量导出模型和贴图
  7. php生成链接列表,根据URL链接和抛文本生成链接a标签的PHP函数
  8. Python数模笔记-StatsModels 统计回归(1)简介
  9. Java volatile关键字详解
  10. Skip level 1 on 1
  11. visual studio 删除附加项
  12. 处理 TXT 文本技巧
  13. geojson 河流_openlayers之点,线,面(以城市,河流,省份为例,分别对应点线面)...
  14. 桥连模式,模板模式的改进
  15. 输出10000以内的质数C语言
  16. Multi-Task Feature Learning for Knowledge Graph Enhanced Recommendation
  17. 从深圳地铁看-------以损害乘客利益为目标的营运方式
  18. 支持U盘数据、误删文件、硬盘数据 、回收站数据恢复的软件
  19. Siege 压力测试
  20. 锌掺杂的普鲁士蓝纳米颗粒|微/纳米多孔普鲁士蓝/金复合物|氧化石墨烯/普鲁士蓝/氨基苝四甲酸复合物(GO/PB/PTC-NH2)

热门文章

  1. 实验二——软件项目管理的直观感受
  2. python工程师年薪多少万_Python工程师工资待遇一般是多少
  3. VMware虚拟机中使用usb设备
  4. Java Map集合的详解
  5. 7. R语言【独立性检验】:卡方独立性检验、Fisher精确检验 、Cochran-Mantel-Haenszel检验
  6. Android#studio@快捷键
  7. mysql关闭空闲连接_终止空闲的mysql连接
  8. 转载 usb_alloc_coherent 和 usb_free_coherent
  9. JAVA面试解析(有赞一面)
  10. 滑环在机电行业的应用