java完全解耦_java-完全解耦

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

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()方法

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java验证xml格式是否正确的是_spring源码附录(1)java实现对XML格式的验证

最近在看spring源码,涉及到xml文档的解析、xml文档的格式验证,发现自己对xml解析的基础较为薄弱,本篇博客复习下DOM方式解析xml(即spring解析xml的方式)。DOM解析XML是将整个XML作为一个对象,占用内存较多。另外一个java官方的XML…

java 批量打印_JAVA批量打印皕杰报表

原标题:JAVA批量打印皕杰报表不使用皕杰报表工具条上的打印按钮,用java怎么实现批量打印皕杰报表呢?解决方案:皕杰报表提供了批量打印的工具类ReportToolkits,ReportToolkits类参考帮助文档-开发指南-javadoc-bios.rep…

java 截串_java字符串截取

import org.apache.commons.lang.stringutils;public class substr{public static void main(string[] args) {string str "1234567890abcdefg";system.out.println("-----------" str.substring(0)); //从字符串索引为0开始截取,一直到字符串…

java json 构造_json 构造和解析

目录:(1)引入jar包;(2)json的构造;(3)json的解析;(4)遍历未知key。(1)java对json的处理,可借助org.json.jar.org.jsonjson20090211(2)json的构造//construct json and output itpublic String constructJson() throws …

java http 上传文件_java利用httpClient实现后台文件上传请求

之前写过基于html和js的文件上传方法java 用springMVC 和HttpServletRequest 两种实现文件上传的方法和httpClient后台执行普通post请求的文章java通过httpClient从接口请求数据入库以及自动生成实体工具类,最近接到一个需求,需要用到后台去调用远程服务…

morse java_华威MORSE,华威数统那个比较好?

其实没什么高下之分了。 毕竟大家都在一个系,上下课交作业都在一起。我个人觉得,数统要比morse更flexible一些。首先你要明白morse和数统课程上的区别在哪里:数统 大一必修数统大一必修共计84CATSmorse大一必修morse大一必修共计120CATS其实差的就是EC10…

java中 以下接口以键_java复习题

1.Java中的long类型占用()个字节。A、1B、2C、4D、82.以下关于继承的叙述不正确的是()。A、在Java中类只允许单一继承B、在Java中一个类只能实现一个接口C、在Java中一个类可以同时继承一个类和实现一个接口D、在Java中接口允许多继承3.4&…

Java游戏有易筋经_易筋经- JavaWeb-1

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言组成部分:ECMAScript:js基础语法(规定 关键字 运算符 语句 函数…

java导出hbase表数据_通用MapReduce程序复制HBase表数据

编写MR程序,让其可以适合大部分的HBase表数据导入到HBase表数据。其中包括可以设置版本数、可以设置输入表的列导入设置(选取其中某几列)、可以设置输出表的列导出设置(选取其中某几列)。原始表test1数据如下:每个row key都有两个版本的数据,…

java双语试卷_Java程序设计基础(双语)试题题目及答案,课程2021最新期末考试题库,章节测验答案...

若二项式(x+13x)n的展开式中含3x的项是第三项,则n的值是______.(x2+1ax)6(a>0)的展开式中常数项是15,那么展开式中所有项系数和是______.(x2+1ax)6(a>0)的展开式中常数项…

java服务器和linux_在Linux下开一个Java服务器(使用CatServer Pro)

引言Linux开服具有快速,高效,性能等特点,而Windows虽然简单,但是不具备Linux良好的性能。本教程就说明一下简单的Linux开服方式(需要教程的人,如果你学会后,请无偿帮助更多的人。)服务器准备首先。先准备一…

java中js九个隐含对象_第九章 JSP标签——《跟我学Shiro》

Shiro提供了JSTL标签用于在JSP/GSP页面进行权限控制,如根据登录用户显示相应的页面按钮。导入标签库标签库定义在shiro-web.jar包下的META-INF/shiro.tld中定义。guest标签欢迎游客访问,登录用户没有身份验证时显示相应信息,即游客访问信息。…

java中jsp标准动作_JavaBean和jsp标准动作

一.JavaBean 1.理解:可以重用的java类 2.分类 1)封装数据的bean(相当于实体类) 2)封装业务的bean(一般就是实现增删改查) 3.注意: 1)封装数据的bean一般要满足如下两个条件 1.implements Serializable:实现序列化接口 2.拥有一个无参的public…

我的世界java版游戏崩溃_我的世界全攻略之-游戏崩溃的解决方法

我的世界崩溃怎么办?下面吾爱网小编给大家带来我的世界无法正常启动的解决方法,需要的朋友可以参考下。我的世界作为许多玩家都十分喜爱的模拟经营沙盘类游戏,经常有玩家反映在玩我的世界的时候,游戏总是会出现崩溃或者无法启动的情况,玩家在遇到的时候不知道怎么办…

手写实现java中的trim_JS中字符串trim()使用示例

示例一:测试JS扩展方法// 合并多个空白为一个空白String.prototype.ResetBlank function() { //对字符串扩展var regEx /\s/g;return this.replace(regEx, );};window.onload function(){var str "你 在他想还好吗?";alert(str);str str.ResetBlan…

java excil表格开发_JAVA导出Excel电子表格的方法

JAVA导出Excel电子表格的方法package com.qingruxu.excel;import java.io.File;import java.io.IOException;import java.net.URL;import jxl.Sheet;import jxl.Workbook;import jxl.format.Border;import jxl.read.biff.BiffException;import jxl.write.Blank;import jxl.writ…

vue3 新项目 - 搭建路由router

创建router/index 文件 main.ts 安装 router 然后 在 app下面 去 设置 路由出口

java json中的注释_如何使用Java中的@Expose注释从JSON中排除字段?

Gson Expose批注可用于标记要公开或不公开(串行化或反序列化)的字段。 expose注释可以取两个参数和每个参数是可以采取任一值的布尔真或假。为了使GSON对Expose批注做出反应,我们必须使用GsonBuilder类创建一个Gson实例,并需要调用excludeFieldsWithoutE…

java 屏蔽邮箱_使用javamail发送邮件的时候如何阻止附件内容输出到控制台

我在使用JavaMail发送带附件的邮件时候,每次到了Transport.sendMessage()这一步,控制台就会输出附件内容,请问如何设置可以取消输出呢?public void sendFileAttachedMail(String fromMail, String toMail, String fromMailPwd, St…

java如何获得相反的颜色_javascript – 如何根据当前颜色生成相反的颜色?

更新:GitHub上的生产就绪代码.我就是这样做的:>将HEX转换为RGB>反转R,G和B组件>将每个组件转换回HEX>用零和输出填充每个组件.function invertColor(hex) {if (hex.indexOf(#) 0) {hex hex.slice(1);}// convert 3-digit hex to 6-digits.…