91视频丝瓜-91视频完整版高清-91视频网-91视频网店-91视频网或将从此无大神-91视频网入口

您好,歡迎訪問上海現易電子元器件有限公司網站!

021-51870898
021-51870898   18019251567
4新聞資訊
您的位置: 首頁 ->  新聞資訊 -> 電源

?適配器模式實例之算法適配

文章出處:電源 責任編輯:上海現易電子元器件有限公司 發表時間:2018-01-15

在計算機編程中,適配器模式(有時候也稱包裝樣式或者包裝)將一個類的接口適配成用戶所期待的。一個適配允許通常因為接口不兼容而不能在一起工作的類工作在一起,做法是將類自己的接口包裹在一個已存在的類中。


將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。——Gang of Four


基本概念


客戶:需要調用我們的代碼的對象。


Adapter模式的宗旨:保留現有類所提供的服務,向客戶提供接口,以滿足客戶的期望。


主要內容


(1)類適配器


當客戶在接口中定義了他期望的行為時,我們就可以應用適配器模式,提供一個實現該接口的類,并且擴展已有的類,通過創建子類來實現適配。


下面是類適配器的UML圖:


(2)對象適配器:


對象適配器”通過組合除了滿足“用戶期待接口”還降低了代碼間的不良耦合。在工作中推薦使用“對象適配”。下面是對象適配器的UML圖:


(3) 缺省適配器模式:


缺省適配器模式是一種特殊的適配器模式,但這個適配器是由一個抽象類實現的,并且在抽象類中要實現目標接口中所規定的所有方法,但很多方法的實現都是“平庸”的實現,也就是說,這些方法都是空方法。而具體的子類都要繼承此抽象類。


結構型模式之對象適配器模式


現有一個接口DataOperaTIon定義了排序方法sort(int[])和查找方法search(int[],int),已知類QuickSort的quickSort(int[])方法實現了快速排序算法,類BinarySearch的binarySearch(int[],int)方法實現了二分查找算法。現使用適配器模式設計一個系統,在不修改源代碼的情況下將類QuickSort和類BinarySearch的方法適配到DataOperaTIon接口中。繪制類圖并編程實現。


代碼


[java] view plain copypackage 適配器模式實例之算法適配;


public interface DataOperaTIon { //目標類


public void sort(int sort[], int i, int j);


public int search(int search[], int n);


}


[java] view plain copypackage 適配器模式實例之算法適配;


public class AlgoTIthmAdapter implements DataOperation{ //適配器類


private QuickSort quick;


private BinarySearch binary;


public AlgotithmAdapter(QuickSort quick) {


this.quick = quick;


}


public AlgotithmAdapter(BinarySearch binary) {


this.binary = binary;


}


public void sort(int sort[], int i, int j) {


quick.quickSort(sort, i, j);


}


public int search(int search[], int n) {


return binary.binarySearch(search, n);


}


}


[java] view plain copypackage 適配器模式實例之算法適配;


public class QuickSort { //適配者類


//劃分數組


int partion(int array[], int p, int r) {


int x = array[r];


int i = p - 1;//注意這點,把i設成負值,然后作為移動的標志


int j;


for (j = p; j 《 r; j++) {


if (array[j] 《= x) {


i++;


int temp = array[j];


array[j] = array[i];


array[i] = temp;

}


}


int temp = array[j];


array[j] = array[i + 1];


array[i + 1] = temp;


return i+1;//返回的應該是交換后的哨兵的位置


}


//遞歸解決每個劃分后的小數組


void quickSort(int[] array, int p, int r) {


if (p 《 r) {


int q = partion(array, p, r);


quickSort(array, p, q - 1);


quickSort(array, q + 1, r);


}


}


}


[java] view plain copypackage 適配器模式實例之算法適配;


public class BinarySearch { //適配者類


public int binarySearch(int[] srcArray, int des){


int low = 0;


int high = srcArray.length-1;


while(low 《= high) {


int middle = (low + high)/2;


if(des == srcArray[middle]) {


return middle;


}else if(des 《srcArray[middle]) {


high = middle - 1;


}else {


low = middle + 1;


}


}


return -1;


}


}


[java] view plain copypackage 適配器模式實例之算法適配;


public class Client { //客戶端類


public static void main(String[] args) {


int[] array = { 4, 3, 5, 2, 3, 6, 8, 9, 18, 12, 53, 20};


int i;


System.out.print(“排序前:”);


for (i=0; i《array.length; i++)


System.out.print(array[i]+“ ”);


BinarySearch binary = new BinarySearch();


AlgotithmAdapter algotithm1 = new AlgotithmAdapter(binary);


System.out.println(“\n通過二分查找得到數字5:位于數組的第”+

(algotithm1.search(array, 5)+1)+“位”);


QuickSort sort = new QuickSort();


AlgotithmAdapter algotithm2 = new AlgotithmAdapter(sort);


algotithm2.sort(array, 0, array.length - 1);


System.out.println(“------------------------------”);


System.out.print(“排序后:”);


for (i=0; i《array.length; i++)


System.out.print(array[i]+“ ”);


//int[] src = new int[] {1, 3, 5, 7, 8, 9};


System.out.println(“\n通過二分查找得到數字5:位于數組的第”+

(algotithm1.search(array, 5)+1)+“位”);


}


}

上海現易電子元器件有限公司 版權所有 未經授權禁止復制或鏡像

CopyRight 2020-2025 www.urqm.cn All rights reserved   滬ICP備2020031792號

友情鏈接:

電話

易經理

18019251567

微信

易經理

易經理

頂部

咨詢
主站蜘蛛池模板: 两个女人互添下身爽舒服小说 | а8天堂资源在线官网 | 在线天堂中文www官网 | 精品卡一卡二卡三国色天香 | 精品网站一区二区三区网站 | 美女裸身大乳图片大全 | 亚洲AV无码一区二区三区牛牛 | 老司机试看午夜 | 国内精品视频在线播放一区 | 国产在线a免费观看 | 天天干天天透 | 少妇大叫又粗又大太爽A片 少妇大乳妓女毛片A片 | 国产亚洲精品线视频在线 | 99re免费99re在线视频手机版 | 在免费JIZZJIZZ在线播放视频 | 欧美内射AAAAAAXXXXX | 91老肥熟 | 久久视频在线视频观看 99 | 欧美a色| 丁香激情综合 | 欧美日韩精品一区二区三区 | 涩涩网站在线观看 | 国产成人鲁鲁免费视频a | 影音先锋资源 av | 精品综合久久久久久99 | 日韩三级在线 | 免费一级片视频 | 日韩精品视频福利资源站 | 免费看片A级毛片免费看 | 激情五月色综合国产精品 | 亚洲一区二区欧美日韩 | 嫩B人妻精品一区二区三区 嫩草AV久久伊人妇女 | 国产精品67人妻无码久久 | 级R片内射在线视频播放 | 无码日本被黑人强伦姧视频 | 在线91色 | 日韩短视频| 亚洲精品久久久久久久久久久 | 国产重口老熟妇 | 伦理电影善良的嫂子3观看 伦理电影播放伦理电影 | 午夜精品亚洲 |