适配器模式:其实就是把一个实例类转换成另外的一个接口的类型的,适配器让原本接口不兼容的类可以合作无间。
适配器是使用组合和继承的方式,得到兼容的功能.耦合性还是比较高的.
请看例子:
/**狼的接口
* @author zhangke
*
*/
interface Wolf{
void say();
void run();
}
//狼的具体实现类
class WhiteWolf implements Wolf{
@Override
public void say() {
System.out.println("wowowo,这个狼在叫唤");
}
@Override
public void run() {
System.out.println("跳一次是60米");
}
}
/**人的接口
* @author zhangke
*
*/
interface Person{
void say();
void run();
}
//黄种人的具体
class YellowPerson implements Person{
@Override
public void say() {
System.out.println("黄种人,主要分布在亚洲的,我们就是黄种人");
}
@Override
public void run() {
System.out.println("跳一次是10米");
}
}
对已经存在的人和狼来说他们之间没有任何的关系,那么问题来了,狼人怎么办?他既是狼又是人,身兼两者的特点,但是首先,他是个人.
所以我们要做的就是把这个人看起来像狼就行了.
我们需要实现狼的接口
我们来制造一个狼人出来,看着像人,又有狼的特性
//一个狼人的具体实现类
class WolfPerson implements Wolf{
//需要得到一个狼人需要一个具体的人作为参数传递进来的.
private Person YellowPerson;
public WolfPerson(Person yellowPerson) {
super();
YellowPerson = yellowPerson;
}
@Override
public void say() {
//还是会说人话的
yellowPerson.say();
}
@Override
public void run() {
for (int i = 0; i < 5; i++) {
//狼人跳一次相当于人跳5次了
yellowPerson.run();
}
}
测试方法:
public static void main(String[] args) {
//白狼
WhiteWolf whiteWolf = new WhiteWolf();
whiteWolf.say();
whiteWolf.run();
System.out.println("~~~~~");
//黄种人
YellowPerson person = new YellowPerson();
person.say();
person.run();
System.out.println("~~~~~");
//狼人
WolfPerson wolfPerson = new WolfPerson(person);
wolfPerson.say();
wolfPerson.run();
}
其实这个模式还是特别简单的,也没有什么好说的了.再见
网友评论