设计模式,麻烦告诉我建造者模式样例
时间: 2023-07-03 19:04:11 浏览: 70
好的,建造者模式是一种创建型设计模式,它允许我们逐步创建复杂的对象,而不必对复杂性过程进行暴露。下面是一个建造者模式的样例:
在一个视频游戏中,我们需要创建一个玩家角色对象,该对象包含玩家的名称、等级、经验值等属性,同时还包含玩家的攻击力、生命值等状态属性。我们可以使用建造者模式来创建该对象,并根据需要灵活添加或修改属性。
首先,我们创建一个玩家角色对象构建器 Builder,用于创建不同属性的玩家角色对象,包括名称、等级、经验值、攻击力、生命值等属性。
然后,我们创建一个具体的玩家角色对象构建器 ConcreteBuilder,用于实现 Builder 接口并控制玩家属性的创建过程。
最后,我们创建一个玩家角色对象的 Director,用于控制对象的创建过程,并且将具体的构建器传递给该对象,以创建包含所有属性的玩家角色对象。
示例代码如下:
```java
//定义玩家角色对象
class Player {
private String name;
private int level;
private int experience;
private int attackPower;
private int healthPoints;
//构造函数
public Player(String name, int level, int experience, int attackPower, int healthPoints) {
this.name = name;
this.level = level;
this.experience = experience;
this.attackPower = attackPower;
this.healthPoints = healthPoints;
}
//可以添加其他属性的 getter 和 setter 方法
}
//定义构造器接口
interface Builder {
void setName(String name);
void setLevel(int level);
void setExperience(int experience);
void setAttackPower(int attackPower);
void setHealthPoints(int healthPoints);
Player getPlayer();
}
//实现具体构造器
class ConcreteBuilder implements Builder {
private Player player = new Player("", 1, 0, 10, 100);
@Override
public void setName(String name) {
player.name = name;
}
@Override
public void setLevel(int level) {
player.level = level;
}
@Override
public void setExperience(int experience) {
player.experience = experience;
}
@Override
public void setAttackPower(int attackPower) {
player.attackPower = attackPower;
}
@Override
public void setHealthPoints(int healthPoints) {
player.healthPoints = healthPoints;
}
@Override
public Player getPlayer() {
return player;
}
}
//定义 Director
class Director {
public Player constructPlayer(Builder builder) {
builder.setName("Alice");
builder.setLevel(10);
builder.setExperience(1000);
builder.setAttackPower(80);
builder.setHealthPoints(500);
return builder.getPlayer();
}
}
//测试代码
public static void main(String[] args) {
Director director = new Director();
Builder builder = new ConcreteBuilder();
Player player = director.constructPlayer(builder);
System.out.println(player.getName());
System.out.println(player.getLevel());
System.out.println(player.getExperience());
System.out.println(player.getAttackPower());
System.out.println(player.getHealthPoints());
}
```
以上就是建造者模式的一个简单样例,它可以通过 Director 控制构建器创建出包含所有属性的玩家角色对象,大大降低了创建对象的复杂性和耦合度。