生成器模式设计实验答案举例

本文介绍了如何使用生成器模式在Java编程中为类似《王者荣耀》的游戏创建可扩展的角色,包括定义游戏角色类、抽象构建接口和具体建造类,以及在指挥者类中管理角色的构建过程。
摘要由CSDN通过智能技术生成

近些年,游戏《王者荣耀》受到很多玩家的喜欢。某软件公司决定开发一款类似的网络游戏。游戏玩家可以在游戏中选择一个特定角色,比如战士、法师、射手、刺客等;不同的角色具有不同的能力。游戏游戏的一个重要组成部分,需要对游戏角色进行设计,而且随着该游戏版本的迭代升级将,不断增加新的角色。不同类型的游戏角色,其姓名、技能、皮肤、服装等外部特性都有所差异。其中游戏角色的类及属性设置如下图所示:

某软件公司决定开发一个小工具来创建游戏角色,可以创建不同类型的角色并可以灵活也增加新的角色。请使用生成器模式实现游戏角色的创建。给出生成器模式类图以及对应程序代码。

对于示例的 Java 代码,本实验需要完成如下图所示的 java 代码:

其中:

Role.java 为游戏角色类,是产品类。

RoleBuilderDirector.java为指挥者类。

RoleBuilder.java 抽象构建接口。

AssasinBuilder.java、WinzardBuilder.java 等为具体产品建造类

Client.java为客户端测试类。

注意:可以自行设计游戏角色类别和构建类。不一定是图中所给的三种角色类别的构建类。

答案举例:

public class Role

{

    private String Name;

    private String Skill;

    private String Skin;

    private String constume;

    public.Role(RoleBuiler builder)

    {

        this.Name = builder.Name;

        this.Skill = builder.Skill;

        this.Skin = builder.Skin;

        this.constume = builder.constume;

    }

}

public static class RoleBuilder

{

    private String Name;

    private String Skill;

    private String Skin;

    private String constume;

    public RoleBuiler(String Name,String Skill,String Skin,String constume)

    {

        this.Name = Name;

        this.Skill = Skill;

        this.Skin = Skin;

        this.constume = constume;

    }

    public Role build()

    {

        return new Role(this);

    }

}

class RoleBuilderDirector

{

       public  Role construct(RoleBuilder ab)

       {

              Role  actor;

              ab.buildName();

              ab.buildSkill();

              ab.buildSkin();

              ab.buildcostume();

              role=ab.createRole();

              return  role;

       }

}

class WinzardBuilder extends RoleBuilder

{

       public  void buildName()

       {

              actor.setName("fzq");

       }

       public  void buildSkill()

       {

              actor.setSkill("lbwnb");

       }

       public  void buildSkin()

       {

              actor.setSkin("superfzq");

       }

       public  void buildcostume()

       {

              actor.setcostume("黑衣");

       }

}

class RiderBuilder extends RoleBuilder

{

       public  void buildName()

       {

              actor.setName("zxz");

       }

       public  void buildSkill()

       {

              actor.setSkill("lmy");

       }

       public  void buildSkin()

       {

              actor.setSkin("superzxz");

       }

       public  void buildcostume()

       {

              actor.setcostume("黑衣");

       }

}

class AssasinBuilder extends RoleBuilder

{

       public  void buildName()

       {

              actor.setName("xhy");

       }

       public  void buildSkill()

       {

              actor.setSkill("rnmtq");

       }

       public  void buildSkin()

       {

              actor.setSkin("superxhy");

       }

       public  void buildcostume()

       {

              actor.setcostume("黑衣");

       }

}

class Client

{

       public  static void main(String args[])

       {

            RoleBuilder ab;

            ab =  (RoleBuilder)XMLUtil.getBean();

            RoleBuilderDirector ac = new  RoleController();

            Role actor;

            actor = ac.construct(ab);

            String  type = actor.getType();

            System.out.println(type  + "的职业:");

            System.out.println("姓名:" + actor.getName());

            System.out.println("技能:" + actor.getSkill());

            System.out.println("皮肤:" + actor.getSkin());

            System.out.println("服装:" + actor.getcostume());

       }

}

  • 25
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值