设计模式--适配器模式

来源:互联网 发布:淘宝童装店简介 编辑:程序博客网 时间:2024/06/06 02:45

1 两个类所做的事情相同或相似,但是具有不同的接口,如果想要使用另外一个接口的实现类,可考虑使用适配器模式。
代码结构如下:
这里写图片描述
如下代码在一个接口的实现类中引用另外一个类、
抽象父类:

public abstract class Player {    protected String name;    public Player(String name) {        this.name = name;    }    public abstract void attack();    public abstract void defense();}

两个子类:

public class CenterPlayer extends Player {    public CenterPlayer(String name) {        super(name);        // TODO Auto-generated constructor stub    }    @Override    public void attack() {        // TODO Auto-generated method stub        System.out.println(name + "进攻");    }    @Override    public void defense() {        // TODO Auto-generated method stub        System.out.println(name + "防守");    }}public class ForwardPlayer extends Player {    public ForwardPlayer(String name) {        super(name);        // TODO Auto-generated constructor stub    }    @Override    public void attack() {        // TODO Auto-generated method stub        System.out.println(name + "进攻");    }    @Override    public void defense() {        // TODO Auto-generated method stub        System.out.println(name + "防守");    }}

适配器:

public class Translator extends Player {    private ForeignPlayer foreignPlayer=new ForeignPlayer();    public Translator(String name) {        super(name);        foreignPlayer.setName(name);    }    @Override    public void attack() {        // TODO Auto-generated method stub        foreignPlayer.attack();    }    @Override    public void defense() {        // TODO Auto-generated method stub        foreignPlayer.defense();    }}

需要适配的类:

public class ForeignPlayer{    private String name;    public void attack() {        // TODO Auto-generated method stub        System.out.println("外籍:"+name+"进攻");    }    public void defense() {        // TODO Auto-generated method stub        System.out.println("外籍:"+name+"防守");    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

测试:

public class TextMain {    public static void main(String[] args) {        // TODO Auto-generated method stub        Player player=new Translator("姚明");        player.attack();        player.defense();    }}

参考《大话设计模式》

原创粉丝点击