Welcome

首页 / 软件开发 / 数据结构与算法 / Java设计模式透析:适配器(Adapter)

Java设计模式透析:适配器(Adapter)2014-01-29 csdn guolin今天一大早,你的leader就匆匆忙忙跑过来找到你:“快,快,紧急任务!最近ChinaJoy马上就 要开始了,老板要求提供一种直观的方式,可以查看到我们新上线的游戏中每个服的在线人数。”

你看了看日期,不是吧!这哪里是马上要开始了,分明是已经开始了!这怎么可能来得及呢 ?

“没关系的。”你的leader安慰你道:“功能其实很简单的,接口都已经提供好了,你只 需要调用一下就行了。”

好吧,你勉为其难地接受了,对于这种突如其来的新需求,你早已 习惯。

你的leader向你具体描述了一下需求,你们的游戏目前有三个服,一服已经开放一段 时间了,二服和三服都是新开的服。设计的接口非常轻便,你只需要调用 Utility.getOnlinePlayerCount(int),传入每个服对应的数值就可以获取到相应服在线玩家的数量 了,如一服传入1,二服传入2,三服则传入3。如果你传入了一个不存在的服,则会返回-1。然后你 只要将得到的数据拼装成XML就好,具体的显示功能由你的leader来完成。

好吧,听起来功能 并不是很复杂,如果现在就开始动工好像还来得及,于是你马上敲起了代码。

首先定义一个 用于统计在线人数的接口PlayerCount,代码如下:

public interface PlayerCount {String getServerName();int getPlayerCount();}
接着定义三个统计类实现了PlayerCount接口,分别对应了三个不同的服,如下所示:

public class ServerOne implements PlayerCount {@Overridepublic String getServerName() {return "一服";}@Overridepublic int getPlayerCount() {return Utility.getOnlinePlayerCount(1);}}
public class ServerTwo implements PlayerCount {@Overridepublic String getServerName() {return "二服";}@Overridepublic int getPlayerCount() {return Utility.getOnlinePlayerCount(2);}}
public class ServerThree implements PlayerCount {@Overridepublic String getServerName() {return "三服";}@Overridepublic int getPlayerCount() {return Utility.getOnlinePlayerCount(3);}}
然后定义一个XMLBuilder类,用于将各服的数据封装成XML格式,代码如下:

public class XMLBuilder {public static String buildXML(PlayerCount player) {StringBuilder builder = new StringBuilder();builder.append("<root>");builder.append("<server>").append(player.getServerName()).append("</server>");builder.append("<player_count").append(player.getPlayerCount()).append("</player_count>");builder.append("</root>");return builder.toString();}}