1700459847
设计模式之禅 第12章 代理模式
1700459848
1700459850
12.1 我是游戏至尊
1700459851
1700459852
2007年,感觉很无聊,于是就玩了一段时间的网络游戏,游戏名就不说了,反正就是打怪、升级、砍人、被人砍,然后继续打怪、升级、打怪、升级……我花了两个月的时间升到80级,已经很有成就感了,但是还会被人杀死,高手到处都是,GM(Game Master,游戏管理员)也不管,对于咱这种非RMB玩家基本上都是懒得搭理。在这段时间我是体会到网络游戏的乐与苦,参与家族(工会)攻城,胜利后那叫一个乐呀,感觉自己真是一个“狂暴战士”,无往不胜!那苦是什么呢?就是升级,为了升一级,就要到出杀怪,做任务,那个游戏还很变态,外挂管得很严,基本上出个外挂,没两天就开始封账号,不敢用,升级基本上都要靠自己手打,累呀!我曾经的记录是连着打了23个小时,睡觉在梦中还和大BOSS在PK。有这样一段经历还是很有意思的,作为架构师是不是可以把这段经历通过架构的方式记录下来呢?当然可以了,我们把这段打游戏的过程系统化,非常简单的一个过程,如图12-1所示。
1700459853
1700459854
1700459855
1700459856
1700459857
图12-1 游戏过程
1700459858
1700459859
太简单了,定义一个接口IGamePlayer,是所有喜爱网络游戏的玩家,然后定义一个具体的实现类GamePlayer,实现每个游戏爱好者为了玩游戏要执行的功能。代码也非常简单,我们先来看IGamePlayer,如代码清单12-1所示。
1700459860
1700459861
代码清单12-1 游戏者接口
1700459862
1700459863
public interface IGamePlayer{
1700459864
1700459865
//登录游戏
1700459866
1700459867
public void login(String user,String password);
1700459868
1700459869
//杀怪,网络游戏的主要特色
1700459870
1700459871
public void killBoss();
1700459872
1700459873
//升级
1700459874
1700459875
public void upgrade();
1700459876
1700459877
}
1700459878
1700459879
非常简单,定义了三个方法,分别是我们在网络游戏中最常用的功能:登录游戏、杀怪和升级,其实现类如代码清单12-2所示。
1700459880
1700459881
代码清单12-2 游戏者
1700459882
1700459883
public class GamePlayer implements IGamePlayer{
1700459884
1700459885
private String name=””;
1700459886
1700459887
//通过构造函数传递名称
1700459888
1700459889
public GamePlayer(String_name){
1700459890
1700459891
this.name=_name;
1700459892
1700459893
}
1700459894
1700459895
//打怪,最期望的就是杀老怪
[
上一页 ]
[ :1.700459846e+09 ]
[
下一页 ]