【发布时间】:2018-02-28 12:42:27
【问题描述】:
所以我有两个课程:SoccerPlayer 和 IceHockeyPlayer
他们都有自己的接口和一些方法:ISoccerPlayer 和 IIceHockeyPlayer
足球运动员:
public class SoccerPlayer implements ISoccerPlayer {
public String[] teammembers;
@Override
public void kickFootball(int meters) {
// Kick the football
}
@Override
public void runForward(double speed) {
// Run forward
}
@Override
public void addTeammembers(String[] memberNames) {
// Add the members
}
}
冰球运动员:
public class IceHockeyPlayer implements IIceHockeyPlayer {
public ArrayList<String> teammembers;
@Override
public void hitPuck(int meters) {
// Hit the puck
}
@Override
public void skateForward(double speed) {
// Skate forward
}
@Override
public void addTeammembers(ArrayList<String> memberNames) {
// Add the members
}
}
接下来,我创建了一个包含 SoccerPlayer 和 IceHockeyPlayer 的类,它实现了这两个接口,这将是我的适配器。
此类中的方法只是调用 SoccerPlayer 或 IceHockeyPlayer 的正确方法:
public class Adapter implements ISoccerPlayer, IIceHockeyPlayer {
public SoccerPlayer soccerplayer;
public IceHockeyPlayer icehockeyplayer;
public Adapter(SoccerPlayer soccerplayer, IceHockeyPlayer icehockeyplayer) {
this.soccerplayer = soccerplayer;
this.icehockeyplayer = icehockeyplayer;
}
// SoccerPlayer
@Override
public void kickFootball(int meters) {
this.soccerplayer.kickFootball(meters);
}
@Override
public void runForward(double speed) {
this.soccerplayer.runForward(speed);
}
@Override
public void addTeammembers(String[] memberNames) {
this.soccerplayer.addTeammembers(memberNames);
}
// IceHockeyPlayer
@Override
public void hitPuck(int meters) {
this.icehockeyplayer.hitPuck(meters);
}
@Override
public void skateForward(double speed) {
this.icehockeyplayer.skateForward(speed);
}
@Override
public void addTeammembers(ArrayList<String> memberNames) {
this.icehockeyplayer.addTeammembers(memberNames);
}
}
这是适配器模式的正确实现吗?如果不是,我需要更改什么才能使其成为一体?
【问题讨论】:
标签: java design-patterns adapter