0
点赞
收藏
分享

微信扫一扫

DP-适配器模式代码重新理解

冶炼厂小练 2024-07-25 阅读 25
package com.designpatterns.adapter;

/**
* 定义鸭子接口
*/

public interface Duck {
/**
* 定义鸭子呱呱叫(quack)
*/

public void quack();

public void fly();
}


package com.designpatterns.adapter;

/**
* 实现一个绿头鸭
*/

public class MallarDuck implements Duck{
@Override
public void quack() {
System.out.println("MallarDuck(绿头鸭)");
}

@Override
public void fly() {
System.out.println("I'm flying!");
}
}


package com.designpatterns.adapter;

/**
* 定义火鸡接口
*/

public interface Turkey {
/**
* 定义咯咯叫(gobble)
*/

public void gobble();
public void fly();
}


package com.designpatterns.adapter;

/**
* 实现一个野火鸡
*/

public class WildTurkey implements Turkey{
@Override
public void gobble() {
System.out.println("咯咯叫");
}

@Override
public void fly() {
System.out.println("i'm flying a short distance");
}
}


package com.designpatterns.adapter;

/** *
* 定义一个适配器:adapter
*
* 鸭子对象短缺,用一些火鸡对象来充数;不能堂而皇之的用火鸡,因为他们接口不同
*
* 现实生活例子:
*中国充电器插口与美国充电器插口,一个是扁的,一个是园的,出差去美国,必须买一个转接头(适配器),
*在美国给自己电脑充电,必须先给自己的插口装上转接头,方可使用美国的充电口
*
* 滥竽充数寓言故事
*/

public class TurkeyAdapter implements Duck{
Turkey turkey;

public TurkeyAdapter(Turkey turkey){
this.turkey=turkey;
}

@Override
public void quack() {
turkey.gobble();
}

@Override
public void fly() {
//火鸡的飞行距离短,火鸡就飞5倍距离,弥补与鸭子的飞行距离差距
for(int i=0;i<5;i++){
turkey.fly();
}

}
}

package com.designpatterns.adapter;

/**
* 测试适配器
*/

public class DuckTestDive {
public static void main(String[] args) {
Duck duck=new MallarDuck();

Turkey turkey=new WildTurkey();

Duck turkeyAdapter=new TurkeyAdapter(turkey);

System.out.println("火鸡说:");
turkey.gobble();
turkey.fly();

System.out.println("\n鸭子说:");
testDuck(duck);

System.out.println("\n火鸡适配器说:");
testDuck(turkeyAdapter);

}

static void testDuck(Duck duck){
duck.quack();
duck.fly();
}
}

代码运行结果如下:

带中国的插头出国,必须准备一个转接头(adapter)

举报

相关推荐

0 条评论