zoukankan      html  css  js  c++  java
  • 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);
        }
    }
    

      效果如图:

  • 相关阅读:
    双网卡绑定一个IP--bond
    查看window系统电脑连接过的wifi密码
    python字符串
    三级菜单
    购物车
    登录接口
    Python 基础之在ubuntu系统下安装双版本python
    SSH连接linux时,长时间不操作就断开的解决方案
    python中变量None的
    查找文件工具find
  • 原文地址:https://www.cnblogs.com/cysolo/p/3560315.html
Copyright © 2011-2022 走看看