题目:
现有系统中有目标类AmericanPlayer,其中包含protected的属性球员姓名name和满足用户需求的接口Attack和Defense
在现有系统中AmericanPlayer细化为Forward、Center、Guard三类,都具体实现了接口Attack和Defense。现引入第三方
类ForeignCenter,功能与现有系统的Forward、Center、Guard类似,jingong功能类似于Attack,fangshou功能类似于Defense。
现统一接口为AmericanPlayer中的Attack和Defens。请使用adapter模式实现
(提示:这个现实生活的实例中,翻译Translator就相当于adapter的功能,所有Attack、Defense、jingong、fangshou用输出语句表示即可)
类图:
代码:
package Adapter;
abstract class AmericanPlayer
{
protected String name;
AmericanPlayer(String name){ this.name = name;}
abstract void Attack();
abstract void Defense();
};
class Forward extends AmericanPlayer
{
Forward(String name){super(name);}
public void Attack(){System.out.println("Forward" + this.name + " attack");}
public void Defense(){ System.out.println("Forward" + this.name + " defend");}
};
class Center extends AmericanPlayer
{
Center(String name){super(name);}
public void Attack(){System.out.println("Center" + this.name + " attack");}
public void Defense(){ System.out.println("Center" + this.name + " defend");}
};
class Guard extends AmericanPlayer
{
Guard(String name){super(name);}
public void Attack(){System.out.println("Guard" + this.name + " attack");}
public void Defense(){ System.out.println("Guard" + this.name + " defend");}
};
class ForeignCenter
{
private String name;
ForeignCenter(String name){ this.name = name; }
public void 进攻()
{
System.out.println("中国中锋" + this.name + " 进攻");
}
public void 防守()
{
System.out.println("中国中锋" + this.name + " 防守");
}
};
class Translator extends AmericanPlayer
{
private ForeignCenter yaoming;
Translator(String name)
{
super(name);
yaoming = new ForeignCenter(name);
}
public void Attack(){ yaoming.进攻(); }
public void Defense(){ yaoming.防守(); }
};
public class TranslatorForYao {
public static void main(String[] args){
AmericanPlayer b = new Forward("巴蒂尔");
AmericanPlayer m = new Guard("麦克格雷迪");
AmericanPlayer y = new Translator("姚明");
b.Attack();
m.Attack();
y.Attack();
y.Attack();
}
}
结果: