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.pswp.cn/news/443079.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443079.shtml
英文地址,請注明出處:http://en.pswp.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.…