适配器模式实例
来源:互联网 发布:淘宝旧版本ipad 编辑:程序博客网 时间:2024/05/23 18:06
题目
/** * 现有一个接口DataOperation定义了排序方法sort(int[]) * 和查找方法search(int[], int), * 已知类QuickSort的quickSort(int[])方法实现了快速排序算法, * 类BinarySearch 的binarySearch(int[], int)方法实现了二分查找算法。 * 试使用适配器模式设计一个系统, * 在不修改源代码的情况下将类QuickSort和类BinarySearch的方法适配到 * DataOperation接口中。绘制类图并编程实现。 * */
类图
代码实现
接口 DataOperation
package com.yuzhyun.test7;public interface DataOperation { void sort(int[] array); int binarySearch(int[] array,int key);}
适配器
package com.yuzhyun.test7;public class DataOperationAdapter implements DataOperation{ @Override public void sort(int[] array) { new QuickSort().sort(array); } @Override public int binarySearch(int[] array, int key) { return new BinarySearch().binarySearch(array, key); }}
客户类Client
import com.yuzhyun.util.XMLUtil;public class Client { public static void main(String[] args) { int array[]={2,1,3,4,5}; int key=3; DataOperation dataOperation= (DataOperation) XMLUtil.getBean("configTest7.xml", "com.yuzhyun.test7."); dataOperation.sort(array); int index =dataOperation.binarySearch(array, key); }}
配置文件读取类XMLUtil
package com.yuzhyun.util;import java.io.File;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Node;import org.w3c.dom.NodeList;public class XMLUtil { public static Object getBean(String configFileName,String packageName) { try { DocumentBuilderFactory dFactory = DocumentBuilderFactory .newInstance(); DocumentBuilder builder = dFactory.newDocumentBuilder(); Document document; //配置文件放在项目的根目录下,不是放在src目录下 document=builder.parse(new File(configFileName)); //获取包含类名的节点 NodeList nodeList=document.getElementsByTagName("className"); Node node= nodeList.item(0).getFirstChild(); String cName=node.getNodeValue().trim(); //通过类名生成实例对象并将其返回 //如果没有包名,会报错java.lang.ClassNotFoundException: Class class1=Class.forName(packageName+cName); Object object=class1.newInstance(); return object; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } }}
配置文件
<?xml version="1.0" encoding="UTF-8"?><config> <className>DataOperationAdapter</className></config>
0 0
- 适配器模式 简单实例
- 适配器模式实例
- 设计模式----适配器模式 实例
- 适配器模式实例(C#)
- 适配器模式实例:反向迭代器
- 代理模式 适配器模式 装饰模式 实例
- 设计模式php实例:适配器模式
- C#实例解析适配器设计模式
- C#实例解析适配器设计模式
- 适配器模式---姚明打篮球实例
- 适配器模式原理及实例介绍
- C# 适配器模式和适配器模式实例(两个应用实例)
- 【设计模式】之实例化适配器(Adapter)模式
- 设计模式实例系列文章之适配器模式
- 设计模式之适配器模式(Adapter)简单实例
- 大话设计模式--适配器模式 Adapter -- C++实现实例
- java 设计模式--适配器模式(实例快速理解)
- PHP设计模式之适配器模式代码实例
- linux upgrate 和upgrade
- char ** 和 const char ** 区别
- Spring+Hibernate+SpringMVC开发简单的博客系统
- pause 和 title
- PAT:Saving James Bond - Easy Version (Java实现)
- 适配器模式实例
- D3D11地形渲染教程四之TerrainLighting
- 历史上的三次数学危机
- (转)HTML中CSS的基本使用方法
- VS (1)VS目录含义
- C++之拷贝构造函数
- 协方差矩阵的几何解释
- 前端开发中表格table单元格高度或者行高的设置
- 将数组对象变成json字符串