您的位置:首页 > 编程语言 > Java开发

Java 23种设计模式之适配器模式

2018-01-01 18:47 585 查看

1. 概念

将一个类的接口转换为客户希望的另外一个接口,Adapter模式
使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

主要分为三类:
类的适配器模式
对象的适配器模式
接口的适配器模式


2. 创建父类球员接口

public abstract class Player {

protected String name;
public Player(String name){
this.name = name;
}

/**
* 进攻
*/
public abstract void attack();

/**
* 防御
*/
public abstract void defense();
}


3. 创建球员类实现父类接口

1. 创建前锋球员
public class ForwardPlayer extends Player{

public ForwardPlayer(String name) {
super(name);
}

@Override
public void attack() {
System.out.println("前锋 "+name +" 进攻");
}

@Override
public void defense() {
System.out.println("前锋 "+name +" 防御");
}
}

2. 创建后锋球员
public class GuardPlayer extends Player{

public GuardPlayer(String name) {
super(name);
}

@Override
public void attack() {
System.out.println("后锋 "+name +" 进攻");
}

@Override
public void defense() {
System.out.println("后锋 "+name +" 防御");
}
}

3. 创建外籍中锋球员
public class ForeignCenterPlayer extends Player{

public ForeignCenterPlayer(String name) {
super(name);
}

@Override
public void attack() {
System.out.println("中锋 "+name +" 进攻");
}

@Override
public void defense() {
System.out.println("中锋 "+name +" 防御");
}
}


4. 创建适配器或者说翻译者类 在这里创建需要翻译的中锋球员类

public class PlayerAdapter extends Player{

private ForeignCenterPlayer centerPlayer;

public PlayerAdapter(String name) {
super(name);
centerPlayer = new ForeignCenterPlayer(name);
}

@Override
public void attack() {
centerPlayer.attack();
}

@Override
public void defense() {
centerPlayer.defense();
}
}


5. 测试类

@org.junit.Test
public void test(){
//创建前锋对象
Player forward = new ForwardPlayer("zlc");
forward.attack();

//创建中锋对象
Player guard = new GuardPlayer("cc");
guard.attack();

//创建翻译者对象
Player adapter = new PlayerAdapter("xixi");
adapter.attack();
adapter.defense();

}


6.小结

使用一个已经存在的类,但如果它的接口,也就是它的方法和你的要求不相同时,
就应该考虑使用适配器模式,不要无视应用场合,盲目使用,
事后控制不如事中控制,事中控制不如事前控制。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: