


/**
-
@Author: cxh
-
@CreateTime: 18/1/15 23:31
-
@ProjectName: JavaBaseTest
*/
public class AdapterForChinesePlayer extends Player {
private String name;
//适配器自然是知道自己应该为谁服务的,所以必须持有被服务者对象实例.
private ChineseGuardPlayer chineseGuardPlayer=new ChineseGuardPlayer();
AdapterForChinesePlayer(String name){
super();
this.name=name;
}
@Override
void attack(){
chineseGuardPlayer.gongJi(name);
}
@Override
void defend() {
chineseGuardPlayer.fangShou(name);
}
}
/**
-
@Author: cxh
-
@CreateTime: 18/1/15 23:25
-
@ProjectName: JavaBaseTest
*/
public class CenterPlayer extends Player {
private String name;
CenterPlayer(String name){
super();
this.name=name;
}
@Override
void attack() {
System.out.println("中锋"+name+"进攻");
}
@Override
void defend() {
System.out.println("中锋"+name+"防守");
}
}
/**
- @Author: cxh
- @CreateTime: 18/1/15 23:28
- @ProjectName: JavaBaseTest
*/
public class ChineseGuardPlayer {
public void gongJi(String name){
System.out.println("后卫"+name+"攻击");
}
public void fangShou(String name){
System.out.println("后卫"+name+"防守");
}
}
/**
-
@Author: cxh
-
@CreateTime: 18/1/15 23:36
-
@ProjectName: JavaBaseTest
*/
public class Client{
public static void main(String[] args) {
//英国前锋
ForwardsPlayer fp=new ForwardsPlayer("乔治");
fp.attack();
fp.defend();
//英国中锋
CenterPlayer cp=new CenterPlayer("约翰");
cp.attack();
cp.defend();
//英国后卫
GuardPlayer gp=new GuardPlayer("布莱克");
gp.attack();
gp.defend();
//中国后卫
Player chinese=new AdapterForChinesePlayer("姚明");
chinese.attack();
chinese.defend();
}
}
/**
-
@Author: cxh
-
@CreateTime: 18/1/15 23:19
-
@ProjectName: JavaBaseTest
*/
public class ForwardsPlayer extends Player {
private String name;
ForwardsPlayer(String name){
super();
this.name=name;
}
@Override
void attack() {
System.out.println("前锋"+name+"进攻");
}
@Override
void defend() {
System.out.println("前锋"+name+"防守");
}
}
/**
-
@Author: cxh
-
@CreateTime: 18/1/15 23:27
-
@ProjectName: JavaBaseTest
*/
public class GuardPlayer extends Player {
private String name;
GuardPlayer(String name){
super();
this.name=name;
}
@Override
void attack() {
System.out.println("后卫"+name+"进攻");
}
@Override
void defend() {
System.out.println("后卫"+name+"防守");
}
}
/**
- @Author: cxh
- @CreateTime: 18/1/15 23:14
- @ProjectName: JavaBaseTest
*/
public abstract class Player{
private String name;
Player(){}
Player(String name){
this.name=name;
}
//进攻
abstract void attack();
//防守
abstract void defend();
}
参考书籍:《大话设计模式》-程杰
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|