Java适配器模式的简单应用

对于刚从工厂生产出来的商品,有些功能并不能完全满足用户的需要。因此,用户通常会对其进行一定的改装工作。编写程序为普通的汽车增加GPS定位功能,借此演示适配器模式的用法。

思路分析:

  1. 这个问题的需求是,在主方法中分别设定普通汽车和GPS汽车的车名和速度,并分别输出普通汽车和GPS汽车的信息;
  2. 首先需要定义一个父类代表普通汽车,它包括两个成员变量分别表示车名和速度,四个成员方法分别设置及获取车名和速度,并重写toString()方法使得该父类返回一个字符串类型的引用;
  3. 定义一个接口,在该接口中定义提供定位功能的方法;
  4. 定义一个子类,该子类继承父类并实现接口,包括一个成员方法,该方法利用汽车的速度来确定汽车的位置,并重写toString()方法使得该子类返回一个字符串类型的引用。

代码如下:

public class Car {
    private String name;			//表示名称
    private double speed;			//表示速度
    
    public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public double getSpeed() {
		return speed;
	}

	public void setSpeed(double speed) {
		this.speed = speed;
	}

	@Override
    public String toString() {					//重写toString()方法
        StringBuilder sb = new StringBuilder();
        sb.append("车名:" + name + ", ");
        sb.append("速度:" + speed + "千米/小时");
        return sb.toString();
    }
}
import java.awt.Point;

public interface GPS {
    Point getLocation();						//提供定位功能
}
import java.awt.Point;

public class GPSCar extends Car implements GPS {
    @Override
    public Point getLocation() {						//利用汽车的速度来确定汽车的位置
        Point point = new Point();
        point.setLocation(super.getSpeed(), super.getSpeed());
        return point;
    }
    @Override
    public String toString() {						//重写toString()方法
        StringBuilder sb = new StringBuilder();
        sb.append(super.toString());
        sb.append(", 坐标:(" + getLocation().x + ", " + getLocation().y + ")");
        return sb.toString();
    }
}
public class Test {
    public static void main(String[] args) {
        System.out.println("自定义普通的汽车:");
        Car car = new Car();
        car.setName("Adui");
        car.setSpeed(60);
        System.out.println(car);
        System.out.println("自定义GPS汽车:");
        GPSCar gpsCar = new GPSCar();
        gpsCar.setName("Audi");
        gpsCar.setSpeed(60);
        System.out.println(gpsCar);
    }
}

  效果如图:

原文地址:https://www.cnblogs.com/cysolo/p/3560315.html