java适配器模式应用_java笔记--适配器模式的运用
適配器模式的運(yùn)用
主要應(yīng)用:
可以在符合OCP原則(開筆原則)的基礎(chǔ)上,為類增加新的功能。
在現(xiàn)有功能上添加新的功能時(shí)無須修改原有功能代碼。
主要角色:
目標(biāo)角色:就是期待得到的接口,如給汽車添加GPS的接口;
源角色:需要被增加功能的類或接口,如汽車類
適配器角色:新創(chuàng)建的類,在源角色的基礎(chǔ)上實(shí)現(xiàn)了目標(biāo)角色,如已經(jīng)成功添加了GPS的汽車類
例子:
為汽車添加GPS功能
1.建立目標(biāo)角色——添加GPS的接口
/**
* 定義GPS接口
*
* @author XIEHEJUN
*
*/
public interface GPS {
public Point getLocation();
}
2.建立源角色——汽車類
/**
* 汽車實(shí)體類
*
* @author XIEHEJUN
*
*/
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() {
StringBuilder sbd =new StringBuilder();
sbd.append("車主名稱為:"+name+" ");
sbd.append("車速為:"+speed+" ");
return sbd.toString();
}
}
3.適配器角色——為汽車添加GPS的類
/**
* 為汽車添加GPS
*
* @author XIEHEJUN
*
*/
public class CarAddGPS extends Car implements GPS {
@Override
public Point getLocation() {
Point point = new Point();
point.setLocation(super.getSpeed(), super.getSpeed());
return point;
}
@Override
public String toString() {
StringBuilder sbd = new StringBuilder();
sbd.append(super.toString());
sbd.append(",坐標(biāo)為(" + getLocation().x + "," + getLocation().y + ")");
return sbd.toString();
}
}
4.測試適配器類——main函數(shù)
public static void main(String[] args) {
System.out.println("************創(chuàng)建普通汽車類**********");
Car car = new Car();
car.setName("李宏");
car.setSpeed(60);
System.out.println(car);
System.out.println("************創(chuàng)建帶有GPS的汽車類*******");
CarAddGPS carGps = new CarAddGPS();
carGps.setName("李小華");
carGps.setSpeed(60);
System.out.println(carGps);
}
原文:http://www.cnblogs.com/XHJT/p/3884785.html
總結(jié)
以上是生活随笔為你收集整理的java适配器模式应用_java笔记--适配器模式的运用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 消息称 R 星游戏《荒野大镖客:救赎》P
- 下一篇: quartz java 线程 不释放_j