适配器模式

什么是适配器?

你想实现一些功能,而这些功能的一部分已经实现了,有可能是你以前写的代码,也有可能是从外面买回来的产品,对于这些现成的类,我们一般是不能通过修改代码的方式把我们需要的功能添加进去,首先是因为直接修改源代码会带来许多的错误,其次是因为买回来的产品一般不会给你源代码的,所以不能直接修改来添加功能。适配器在这种情况下就发挥作用了,就好像有一条比较粗的水管和一条比较小的水管,我们要把他们连接起来,这时候,适配器就是起到了连接的作用。

怎么实现适配器?

适配器有一个核心的接口,这个接口有所需要的所有方法,包括以实现和未实现的,然后,由于适配器模式又分为类适配器和对象适配器,在类适配器中,我们是通过继承接口和原有类的方法去实现一个新的类,并且只需实现为实现的方法;而对象适配器则是通过继承接口和在类里面实现所有的方法。

下面给出一个简单的例子,实现一个类,该类有一个实数数组的排序的方法。现在想对一个整数排序,请利用类适配器完成该实验。

两种适配的接口都为:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package adapter;

/**
 *
 * @author Administrator
 */
public interface SortTarget {
    public String iSort(int [] a);
    public String rSort(double[] a);
}

两种适配器的已实现类都相同:

package adapter;

import java.util.Arrays;

public class RealSort {

    
//    public static void main(String[] args)
    public String rSort(double[] a) {
        
        for(int i=0;i<a.length;i++){
            for(int j=i+1;j<a.length;j++){
                if (a[i]>a[j]) {
                    double temp=a[i];
                    a[i]=a[j];
                    a[j]=temp;                    
                }
            }
        }
        StringBuilder str =new StringBuilder("");
        for (double t :a) {
//            System.out.println(t);
            str.append(Double.toString(t)+"\n");
        }
        return new String(str);
    }

}

两者的区别:

类适配器的整数排列的类:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package adapter;

/**
 *
 * @author Administrator
 */
public class IntSort extends RealSort implements SortTarget{
    public String iSort(int [] a){
        double[] b=new double[a.length];
        for(int i=0;i<a.length;i++){
            b[i]=a[i];   //将int[]数组转化为double[]数组
        }
        return rSort(b);    //直接调用SortTarget中的rSort方法
    }
//        public static void main(String[] args){
//        IntSort realSort=new IntSort();
//        int[] a = {1, 5, 3, 8, 9};
//        realSort.iSort(a);
//    }
    
}

对象适配器的整数排列的类:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package adapter_object;

/**
 *
 * @author Administrator
 */
public class IntSort implements SortTarget {

    private double[] b;
    RealSort real;   //定义一个 RealSort对象,这是实现对象适配器的第一步
    public String iSort(int[] a) {
        b = new double[a.length];
        for (int i = 0; i < a.length; i++) {
            b[i] = a[i];      //将int[]数组转化为double[]数组
        }
        real=new RealSort();   //实例化
        return rSort(b);
    }

    public String rSort(double[] a) {   //实现已有的方法
        return real.rSort(a);    
    }
}

例子就讲到这里,希望大家能够明白!

在探索智慧旅游的新纪元中,一个集科技、创新与服务于一体的整体解决方案正悄然改变着我们的旅行方式。智慧旅游,作为智慧城市的重要分支,旨在通过新一代信息技术,如云计算、大数据、物联网等,为游客、旅游企业及政府部门提供无缝对接、高效互动的旅游体验与管理模式。这一方案不仅重新定义了旅游行业的服务标准,更开启了旅游业数字化转型的新篇章。 智慧旅游的核心在于“以人为本”,它不仅仅关注技术的革新,更注重游客体验的提升。从游前的行程规划、信息查询,到游中的智能导航、个性化导览,再到游后的心情分享、服务评价,智慧旅游通过构建“一云多屏”的服务平台,让游客在旅游的全过程中都能享受到便捷、个性化的服务。例如,游客可以通过手机APP轻松定制专属行程,利用智能语音导览深入了解景点背后的故事,甚至通过三维GIS地图实现虚拟漫游,提前感受目的地的魅力。这些创新服务不仅增强了游客的参与感和满意度,也让旅游变得更加智能化、趣味化。 此外,智慧旅游还为旅游企业和政府部门带来了前所未有的管理变革。通过大数据分析,旅游企业能够精准把握市场动态,实现旅游产品的精准营销和个性化推荐,从而提升市场竞争力。而政府部门则能利用智慧旅游平台实现对旅游资源的科学规划和精细管理,提高监管效率和质量。例如,通过实时监控和数据分析,政府可以迅速应对旅游高峰期的客流压力,有效预防景区超载,保障游客安全。同时,智慧旅游还促进了跨行业、跨部门的数据共享与协同合作,为旅游业的可持续发展奠定了坚实基础。总之,智慧旅游以其独特的魅力和无限潜力,正引领着旅游业迈向一个更加智慧、便捷、高效的新时代。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值