该问题要求使用创建模式实现游戏人物设计。一个例子是某游戏软件中,人物角色包括多种类型,不同类型的人物角色具有性别、脸型、发型等外部特征有所差异,使用创建者模式创建人物角色对象,要求绘制类图。代码
时间: 2023-06-17 10:06:14 浏览: 196
以下是使用创建者模式创建游戏人物的类图:
![创建者模式类图](https://img-blog.csdn.net/20180613134323631?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h5Z2xhbmQxOTk1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/85)
在这个类图中,我们有以下几个类:
- Director:创建者类,负责指导 Builder 如何创建游戏人物对象。
- Builder:抽象建造者类,定义了创建游戏人物对象所需的各种方法。
- ConcreteBuilder:具体建造者类,实现了 Builder 中定义的方法,并且返回最终创建的游戏人物对象。
- Character:游戏人物类,包含了游戏人物的各种属性,例如性别、脸型、发型等。
- Client:客户端类,负责使用 Director 和 ConcreteBuilder 创建游戏人物对象。
以下是使用创建者模式创建游戏人物的示例代码:
```java
// 游戏人物类
public class Character {
private String gender;
private String face;
private String hairstyle;
public void setGender(String gender) {
this.gender = gender;
}
public void setFace(String face) {
this.face = face;
}
public void setHairstyle(String hairstyle) {
this.hairstyle = hairstyle;
}
@Override
public String toString() {
return "Character{" +
"gender='" + gender + '\'' +
", face='" + face + '\'' +
", hairstyle='" + hairstyle + '\'' +
'}';
}
}
// 抽象建造者类
public abstract class Builder {
protected Character character = new Character();
public abstract void buildGender(String gender);
public abstract void buildFace(String face);
public abstract void buildHairstyle(String hairstyle);
public Character getResult() {
return character;
}
}
// 具体建造者类
public class ConcreteBuilder extends Builder {
@Override
public void buildGender(String gender) {
character.setGender(gender);
}
@Override
public void buildFace(String face) {
character.setFace(face);
}
@Override
public void buildHairstyle(String hairstyle) {
character.setHairstyle(hairstyle);
}
}
// 创建者类
public class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
public void construct(String gender, String face, String hairstyle) {
builder.buildGender(gender);
builder.buildFace(face);
builder.buildHairstyle(hairstyle);
}
}
// 客户端类
public class Client {
public static void main(String[] args) {
Builder builder = new ConcreteBuilder();
Director director = new Director(builder);
director.construct("male", "oval", "short");
Character character = builder.getResult();
System.out.println(character);
}
}
```
运行上述代码,将输出以下结果:
```
Character{gender='male', face='oval', hairstyle='short'}
```
这表明我们成功地使用创建者模式创建了一个游戏人物对象,并且该对象包含了指定的性别、脸型和发型等外部特征。
阅读全文