建造者模式-游戏角色.doc

上传人:大米 文档编号:550332349 上传时间:2023-06-05 格式:DOC 页数:8 大小:78.51KB
返回 下载 相关 举报
建造者模式-游戏角色.doc_第1页
第1页 / 共8页
建造者模式-游戏角色.doc_第2页
第2页 / 共8页
建造者模式-游戏角色.doc_第3页
第3页 / 共8页
建造者模式-游戏角色.doc_第4页
第4页 / 共8页
建造者模式-游戏角色.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《建造者模式-游戏角色.doc》由会员分享,可在线阅读,更多相关《建造者模式-游戏角色.doc(8页珍藏版)》请在金锄头文库上搜索。

1、完整解决方案 Sunny公司开发人员决定使用建造者模式来实现游戏角色的创建,其基本结构如图8-3所示:图7-1 游戏角色创建结构图 在图7-1中,ActorController充当指挥者,ActorBuilder充当抽象建造者,HeroBuilder、AngelBuilder和DevilBuilder充当具体建造者,Actor充当复杂产品。完整代码如下所示:/Actor角色类:复杂产品,考虑到代码的可读性,只列出部分成员属性,且成员属性的类型均为String,真实情况下,有些成员属性的类型需自定义class Actor private String type; /角色类型 private St

2、ring sex; /性别 private String face; /脸型 private String costume; /服装 private String hairstyle; /发型 public void setType(String type) this.type = type; public void setSex(String sex) this.sex = sex; public void setFace(String face) this.face = face; public void setCostume(String costume) this.costume =

3、costume; public void setHairstyle(String hairstyle) this.hairstyle = hairstyle; public String getType() return (this.type); public String getSex() return (this.sex); public String getFace() return (this.face); public String getCostume() return (this.costume); public String getHairstyle() return (thi

4、s.hairstyle); /角色建造器:抽象建造者abstract class ActorBuilder protected Actor actor = new Actor(); public abstract void buildType(); public abstract void buildSex(); public abstract void buildFace(); public abstract void buildCostume(); public abstract void buildHairstyle(); /工厂方法,返回一个完整的游戏角色对象 public Actor

5、 createActor() return actor; /英雄角色建造器:具体建造者class HeroBuilder extends ActorBuilder public void buildType() actor.setType(英雄); public void buildSex() actor.setSex(男); public void buildFace() actor.setFace(英俊); public void buildCostume() actor.setCostume(盔甲); public void buildHairstyle() actor.setHairs

6、tyle(飘逸); /天使角色建造器:具体建造者class AngelBuilder extends ActorBuilder public void buildType() actor.setType(天使); public void buildSex() actor.setSex(女); public void buildFace() actor.setFace(漂亮); public void buildCostume() actor.setCostume(白裙); public void buildHairstyle() actor.setHairstyle(披肩长发); /恶魔角色建

7、造器:具体建造者class DevilBuilder extends ActorBuilder public void buildType() actor.setType(恶魔); public void buildSex() actor.setSex(妖); public void buildFace() actor.setFace(丑陋); public void buildCostume() actor.setCostume(黑衣); public void buildHairstyle() actor.setHairstyle(光头); 指挥者类ActorController定义了co

8、nstruct()方法,该方法拥有一个抽象建造者ActorBuilder类型的参数,在该方法内部实现了游戏角色对象的逐步构建,代码如下所示:/游戏角色创建控制器:指挥者class ActorController /逐步构建复杂产品对象 public Actor construct(ActorBuilder ab) Actor actor; ab.buildType(); ab.buildSex(); ab.buildFace(); ab.buildCostume(); ab.buildHairstyle(); actor=ab.createActor(); return actor; 为了提高

9、系统的灵活性和可扩展性,我们将具体建造者类的类名存储在配置文件中,并通过工具类XMLUtil来读取配置文件并反射生成对象,XMLUtil类的代码如下所示:import javax.xml.parsers.*;import org.w3c.dom.*;import org.xml.sax.SAXException;import java.io.*;class XMLUtil/该方法用于从XML配置文件中提取具体类类名,并返回一个实例对象 public static Object getBean() try /创建文档对象 DocumentBuilderFactory dFactory = Doc

10、umentBuilderFactory.newInstance(); DocumentBuilder builder = dFactory.newDocumentBuilder(); Document doc; doc = builder.parse(new File(config.xml); /获取包含类名的文本节点 NodeList nl = doc.getElementsByTagName(className); Node classNode=nl.item(0).getFirstChild(); String cName=classNode.getNodeValue(); /通过类名生成实例对象并将其返回 Class c=Class.forName(cName); Object obj=c.newInstance(); return ob

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号