日期:2014-05-17  浏览次数:20615 次

23种设计模式---(适配器模式)
我们先看客户端需求
public class testclient {
        public static void main(String[] args) {
                // TODO Auto-generated method stub

     Map map;
     application.excute(map);//要求输出map数据
     System.out.print(b);
        }
}
//map数据类型输出程序
package com.moshi.adapter;
import java.util.HashMap;

public class application {
   public void excute(HashMap map){
           for(int i=0;i<map.size();i++){
                   System.out.println(map.get(i+""));
           }
   }
}
这都定义好了 但我们只实现了返回List数据类型的类
实例代码如下--------------------------
package com.moshi.adapter;
import java.util.ArrayList;
import java.util.List;
public class listserver {
    public List getList(){
            List list=new ArrayList();
            list.add("张三");
            list.add("李四");
            list.add("王五");
            return list;
    }
}

所以这里要定义一个list的适配器类 完成数据类型的匹配。。。
适配器类代码如下:
package com.moshi.adapter;
import java.util.HashMap;
import java.util.List;

public class listadapter extends HashMap{
    private List list;
    public listadapter(List listserver){
            this.list=listserver;
    }
    public int size(){
            return list.size();
    }
    public Object get(Object i){
            return list.get(Integer.valueOf(i.toString()).intValue());
    }
}
这个就是适配器的作用。。
然后再在客户端输出
package com.moshi.adapter;

import java.util.List;
import java.util.Scanner;
public class testclient {
        public static void main(String[] args) {
     application application=new application();
     listserver listserver=new listserver();
     List list=listserver.getList();
     Map listadapter=new listadapter(list);//list->map的适配器
     application.excute(listadapter);//输出map型的数据
     Scanner scanner=new Scanner(System.in);
     double b=scanner.nextDouble();
     System.out.print(b);