设计模式之建造者模式(6)

设计模式之建造者模式(6)建造者模式 复杂对象的组装与创建 一 建造者模式概述建造者又称为生成器模式 它是一种较为复杂 使用频率也相对较低的创建型模式 建造者为客户端返回的不是一个简单的产品 而是一个由多个部件组成的复杂的产品 那么什么是复杂

大家好,欢迎来到IT知识分享网。

三:案例
作为RPG游戏的一个重要组成部分, 需要对游戏角色进行设计, 而且随着该游戏的升级将不
断增加新的角色。 不同类型的游戏角色, 其性别、 脸型、 服装、 发型等外部特性都有所差
异, 例如“天使”拥有美丽的面容和披肩的长发, 并身穿一袭白裙; 而“恶魔”极其丑陋, 留着光
头并穿一件刺眼的黑衣。 Sunny公司决定开发一个小工具来创建游戏角色, 可以创建不同类型
的角色并可以灵活增加新的角色。

3.1复杂产品






//复杂产品 public class Actor { private String type;//角色类型 private String sex;//性别 private String face;//脸型 private String constume;//服装 private String hairStyle;//发型 public String getType() { return type; } public void setType(String type) { this.type = type; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getFace() { return face; } public void setFace(String face) { this.face = face; } public String getConstume() { return constume; } public void setConstume(String constume) { this.constume = constume; } public String getHairStyle() { return hairStyle; } public void setHairStyle(String hairStyle) { this.hairStyle = hairStyle; } @Override public String toString() { return "Actor [type=" + type + ", sex=" + sex + ", face=" + face + ", constume=" + constume + ", hairStyle=" + hairStyle + "]"; } }

3.2抽象建造者

//抽象建造者 public abstract class ActorBuilder { protected Actor actor = new Actor();//为什么要protected public abstract void buildType(); public abstract void buildSex(); public abstract void buildFace(); public abstract void buildConstume(); public abstract void buildHGairStyle(); public Actor getResult() { return actor; } }

3.3具体建造者

//具体建造者 public class HeroBuilder extends ActorBuilder{ @Override public void buildType() { actor.setType("英雄"); } @Override public void buildSex() { actor.setSex("男"); } @Override public void buildFace() { actor.setFace("帅气"); } @Override public void buildConstume() { actor.setConstume("fashion"); } @Override public void buildHGairStyle() { actor.setConstume("飘逸"); } }
//具体建造者 public class AngelBuilder extends ActorBuilder{ @Override public void buildType() { actor.setType("天使"); } @Override public void buildSex() { actor.setSex("女"); } @Override public void buildFace() { actor.setFace("好看"); } @Override public void buildConstume() { actor.setConstume("裙子"); } @Override public void buildHGairStyle() { actor.setHairStyle("乌黑长发"); } } 
//指挥者 public class ActorController { //关联一个抽象建造者 private ActorBuilder actorBuilder; public ActorController(ActorBuilder actorBuilder) { this.actorBuilder = actorBuilder; } public Actor Assemble() { actorBuilder.buildType(); actorBuilder.buildSex(); actorBuilder.buildFace(); actorBuilder.buildConstume(); actorBuilder.buildHGairStyle(); return actorBuilder.getResult(); } }

3.5 客户端测试代码

public class Client { public static void main(String[] args) { //抽象建造者 ActorBuilder actorBuilder; //指挥者 ActorController actorController; //产品 Actor actor; actorBuilder = new AngelBuilder(); actorController = new ActorController(actorBuilder); actor = actorController.Assemble(); System.out.println(actor); } }

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/137357.html

(0)
上一篇 2025-06-20 22:45
下一篇 2025-06-02 17:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信