time 
设为首页】【收藏本站
当前位置: 主页 > JAVA > Java高级 > 设计模式 > Java设计模式分析之适配器(Adapter)

Java设计模式分析之适配器(Adapter)

时间:2014-06-18 15:34 点击:3896次 字体:[ ]




今天一大早,你的leader就匆匆忙忙跑过来找到你:“快,快,紧急任务!最近ChinaJoy马上就要开始了,老板要求提供一种直观的方式,可以查看到我们新上线的游戏中每个服的在线人数。”
 

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

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

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

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

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

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

  1. public interface PlayerCount {  
  2.  
  3.     String getServerName();  
  4.  
  5.     int getPlayerCount();  
  6.  
  7. }  

接着定义三个统计类实现了PlayerCount接口,分别对应了三个不同的服,如下所示:

  1. public class ServerOne implements PlayerCount {  
  2.  
  3.     @Override 
  4.     public String getServerName() {  
  5.         return "一服";  
  6.     }  
  7.  
  8.     @Override 
  9.     public int getPlayerCount() {  
  10.         return Utility.getOnlinePlayerCount(1);  
  11.     }  
  12.  
  13. }  
  14. public class ServerTwo implements PlayerCount {  
  15.  
  16.     @Override 
  17.     public String getServerName() {  
  18.         return "二服";  
  19.     }  
  20.  
  21.     @Override 
  22.     public int getPlayerCount() {  
  23.         return Utility.getOnlinePlayerCount(2);  
  24.     }  
  25.  
  26. }  
  27. public class ServerThree implements PlayerCount {  
  28.  
  29.     @Override 
  30.     public String getServerName() {  
  31.         return "三服";  
  32.     }  
  33.  
  34.     @Override 
  35.     public int getPlayerCount() {  
  36.         return Utility.getOnlinePlayerCount(3);  
  37.     }  
  38.  
  39. }  

然后定义一个XMLBuilder类,用于将各服的数据封装成XML格式,代码如下:

  1. public class XMLBuilder {  
  2.  
  3.     public static String buildXML(PlayerCount player) {  
  4.         StringBuilder builder = new StringBuilder();  
  5.         builder.append("<root>");  
  6.         builder.append("<server>").append(player.getServerName()).append("</server>");  
  7.         builder.append("<player_count").append(player.getPlayerCount()).append("</player_count>");  
  8.         builder.append("</root>");  
  9.         return builder.toString();  
  10.     }  
  11.  
  12. }  

这样的话,所有代码就完工了,如果你想查看一服在线玩家数只需要调用:

XMLBuilder.buildXML(new ServerOne());

查看二服在线玩家数只需要调用:

XMLBuilder.buildXML(new ServerTwo());

查看三服在线玩家数只需要调用:
 

XMLBuilder.buildXML(new ServerThree());

咦?你发现查看一服在线玩家数的时候,返回值永远是-1,查看二服和三服都很正常。



本文地址 : http://www.fengfly.com/plus/view-215099-1.html
标签: 适配器 adapter java 设计模式
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:
本栏分类