time 
设为首页】【收藏本站

44999贴士人物白小姐: 白小姐彩图

当前位置: 白小姐彩图 > JAVA > Java高级 > 设计模式 > Java设计模式分析之适配器(Adapter)

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

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




白小姐彩图 www.5vq5o.cn 今天一大早,你的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,查看二服和三服都很正常。



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

  • Valentino 2017秋冬高级定制大秀 2018-09-08
  • 中国经济充当了世界经济发展的火车头。但是,作为世界经济火车头的中国,在世界主要经济体股市都走牛的情况下,为何熊途漫漫?这种不正常的现象,背后是我们资本市场的投融 2018-07-14
  • 别空谈,说说看,这个“简单的逻辑关系”是什么关系? 2018-07-13
  • “讲课带着泥土味,我们都爱听” 2018-07-13
  • 习近平:绿水青山就是金山银山 2018-07-12
  • 端午思屈原,为什么《橘颂》是一篇伟大的作品 2018-07-11
  • 2018年焉耆县旅游美食文化推介会在库尔勒市举行 2018-07-10
  • 《中国气候变化蓝皮书》:年平均气温显著上升 2018-07-10
  • 24小时智能无人便利店落户唐山 2018-07-09
  • 理货员忙不过来 宁波球迷把啤酒销量喝成井喷状态 2018-07-09
  • 回复@寻找失落的真理:跟你的铁环玩去!咱真的没兴趣碾压你也。 2018-07-08
  • 易烊千玺押中高考作文题?不仅会押,今年还唱过! 2018-07-07
  • 【北京达世行世纪车型报价】北京达世行世纪4S店车型价格 2018-07-06
  • 欢迎访问《北京体育大学学报》编辑部网站 2018-07-05
  • 995| 21| 585| 568| 359| 879| 187| 98| 288| 367|