某游戏软件中人物角色包括多种类型,不同类型的人物角色,其性别、脸型、服装、发型等外部特性有所差异,使用建造者模式创建人物角包对象,要求绘制类图开编程实现
时间: 2024-01-07 18:04:45 浏览: 23
以下是建造者模式的类图:
![Builder Pattern Class Diagram](https://img-blog.csdn.net/20170602095758966?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGVhcm5pbmcxOTkx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80)
具体实现代码如下:
```java
// 人物角色类
public class Character {
private String gender;
private String faceShape;
private String clothing;
private String hairstyle;
public void setGender(String gender) {
this.gender = gender;
}
public void setFaceShape(String faceShape) {
this.faceShape = faceShape;
}
public void setClothing(String clothing) {
this.clothing = clothing;
}
public void setHairstyle(String hairstyle) {
this.hairstyle = hairstyle;
}
@Override
public String toString() {
return "Character{" +
"gender='" + gender + '\'' +
", faceShape='" + faceShape + '\'' +
", clothing='" + clothing + '\'' +
", hairstyle='" + hairstyle + '\'' +
'}';
}
}
// 抽象建造者类
public abstract class CharacterBuilder {
protected Character character = new Character();
public abstract void buildGender();
public abstract void buildFaceShape();
public abstract void buildClothing();
public abstract void buildHairstyle();
public Character getCharacter() {
return character;
}
}
// 具体建造者类1
public class MaleCharacterBuilder extends CharacterBuilder {
@Override
public void buildGender() {
character.setGender("Male");
}
@Override
public void buildFaceShape() {
character.setFaceShape("Square");
}
@Override
public void buildClothing() {
character.setClothing("Suit");
}
@Override
public void buildHairstyle() {
character.setHairstyle("Short");
}
}
// 具体建造者类2
public class FemaleCharacterBuilder extends CharacterBuilder {
@Override
public void buildGender() {
character.setGender("Female");
}
@Override
public void buildFaceShape() {
character.setFaceShape("Oval");
}
@Override
public void buildClothing() {
character.setClothing("Dress");
}
@Override
public void buildHairstyle() {
character.setHairstyle("Long");
}
}
// 指挥者类
public class CharacterDirector {
public Character constructCharacter(CharacterBuilder builder) {
builder.buildGender();
builder.buildFaceShape();
builder.buildClothing();
builder.buildHairstyle();
return builder.getCharacter();
}
}
// 测试类
public class Test {
public static void main(String[] args) {
CharacterDirector director = new CharacterDirector();
CharacterBuilder builder1 = new MaleCharacterBuilder();
CharacterBuilder builder2 = new FemaleCharacterBuilder();
Character character1 = director.constructCharacter(builder1);
Character character2 = director.constructCharacter(builder2);
System.out.println(character1);
System.out.println(character2);
}
}
```