通过一个简单的例子说一下适配器模式,适配器模式属于接口型模式。适配器模式的意图在于,使用不同接口的类所提供的服务为客户端提供
它所期望的接口!!!
举个例子,日常生活中我们都要用水,所以我们就装水管到每家每户,到每家每户的水我们怎么才能用(控制水流,使用水等),毫无疑问,当然是水龙头啊,
接着在水管上装了一个水龙头,之后我们就可以舒舒服服用水洗菜,冲厕所等,突然有一天我想洗澡了,发现水龙头的水直流并且成一条水柱,太不舒服,于是我就买了
一个喷头,利用喷头来洗澡!!
目标(Target):这就是所期待得到的接口。也就是水管(Pipe)
源(source)角色:现在需要适配的接口。水龙头(Tap)
适配器(Adaper):适配器类是本模式的核心。适配器把源接口转换成目标接口。显然,这一角色不可以是接口,而必须是具体类。也就是上述例子中的喷头(Nozzle)
Pipe接口的代码:
package com.panther.dong.designpattern.adapter;
/**
* Created by panther on 15-8-22.
*/
public interface Pipe {
public void water(); //使用水
public void flow(); //水的流量
public void wide(); //水管宽度;
}
Tap的代码:
package com.panther.dong.designpattern.adapter;
/**
* Created by panther on 15-8-22.
*/
public class Tap {
private String name = "华艺"; //水龙头品牌
public void water()
{
System.out.println("水缓缓流出,可以用了");
}
}
Nozzle代码:
package com.panther.dong.designpattern.adapter;
/**
* Created by panther on 15-8-22.
*/
public class Nozzle extends Tap implements Pipe {
@Override
public void water() {
super.water();
}
@Override
public void flow() {
}
@Override
public void wide() {
}
}
测试:
package com.panther.dong.designpattern.adapter;
/**
* Created by panther on 15-8-22.
*/
public class AdapterTest {
public static void main(String[] args) {
new Nozzle().water();
}
}
运行结果:
水缓缓流出,可以用了