package com.适配器模式;
abstract class Player {//抽象球员类
protected String name;
public Player(String name)
{
this.name=name;
}
public abstract void Attack();
public abstract void Defense();
}
package com.适配器模式;
public class Forwardes extends Player {//会英语的外国球员
public Forwardes(String name) {//因为父类没有无参构造函数,抽象的父类写了有参构造函数,
//子类必须有构造方法显示调用父类的构造方法
super(name);
}
@Override
public void Attack() {
System.out.println(this.name +":前锋 Attack");//继承父类的name
}
@Override
public void Defense() {
System.out.println(this.name+":前锋 Defense");
}
}
package com.适配器模式;
public class ForeignCenter {//不会英语的中国球员
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void ForeignAttack(){
System.out.println(this.name +":外籍前锋 进攻");//继承父类的name
}
public void ForeignDefense() {
System.out.println(this.name+":外籍前锋 防守");
}
}
package com.适配器模式;
public class Traslator extends Player {//翻译员,作为适配器连接会英语的球员和不会英语的球员
private ForeignCenter fc = new ForeignCenter();
public Traslator(String name) {
super(name);
fc.setName(name);
}
@Override
public void Attack() {
fc.ForeignAttack();
}
@Override
public void Defense() {
fc.ForeignDefense();
}
}
package com.适配器模式;
public class Main {
public static void main(String args[]){
Player a=new Forwardes("巴蒂尔");
a.Attack();
a.Defense();
Player ym=new Traslator("姚明");
ym.Attack();
ym.Defense();
}
}
巴蒂尔:前锋 Attack
巴蒂尔:前锋 Defense
姚明:外籍前锋 进攻
姚明:外籍前锋 防守