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

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. 跨域解决方案一:使用CORS实现跨域
  2. 认房又认贷 政策的真正意图——限购令如果没有同时增加土地供应,只是在变相加剧未来房价的上涨...
  3. 【干货】实用案例|产品设计中的恰到好处
  4. Android 使用ContentProvider(内容提供者)查询手机联系
  5. TCP 和IP的区别
  6. [z]Qt 内存管理机制
  7. 腾讯开源负责人许勇:未来开源计划重点是AI和服务小程序生态
  8. javascript瀑布流效果
  9. 《C和指针》——在一组字符串中查找
  10. 去中心化加密指数协议DeHive即将4月14日启动公募
  11. python爬虫JS逆向加密破解之百度翻译
  12. python怎么读取csv文件-python如何读取csv数据
  13. ps人像精修照片步骤_15天零基础自学PS!送你整套PS教程297集+视频+素材+源文件模板6...
  14. cgroup代码浅析(1)
  15. C#笔记 使用自定义事件(含参)
  16. Ordinal Regression with Multiple Output CNN for Age Estimation-(系列一_年龄估计)
  17. 软件测试工程师...我是如何正确地申请加薪的!
  18. 多个绝对值相加求最大值问题_多个绝对值求和型函数最值问题的求解方法
  19. 半双工通信是指c语言,Linux下C语言实现半双工的UDP通信
  20. 富不过三代已成过去,解答为什么越有钱的越有钱?

热门文章

  1. 经验证过的跨线程更新辅助类MyInvokeHelper
  2. 象过河软件试用版_比肩许银川蒋川王天一,象棋软件下出神一样的残局,看完叹为观止...
  3. IDE--ubuntu下安装 Source insight
  4. WinCE EBOOT中的BootPart分析
  5. 计算机辅助项目管理课程方案,天津大学计算机辅助管理研究生课程简介
  6. 智能集群理论优化控制_数学学科学术报告九:机器人集群的智能协同控制方法_中国计量大学...
  7. php微信模板信息发送的代码例子,微信模板消息发送样例
  8. 【转】VTK与Qt整合的示例
  9. .NET三种异步模式(APM、EAP、TAP)
  10. 第二节:如何正确使用WebApi和使用过程中的一些坑