建造者模式:设计角度重温游戏中的角色
2017-05-30 17:44
344 查看
应用场景
假设现在我们要设计DNF中的人物角色(鬼剑士、神枪手、魔法师、圣骑士、格斗家)。然而,利用面对对象的思想,必须先从实体入手,每一个角色都包含各种装备、武器、配饰,这些就当做要建造的零件,然后把装备零件组装起来,那么就是最终人物角色的能量值,然后它就将造成不同的伤害。回忆过程:假设要创建一个角色,先构建装备零件,控制者控制组装装备零件,构建者得到专属角色。
简述实现
建造者模式:将一部负责对象的构建分为许多小对象的构建,最后在整合构建的模式。建造者模式适用于构造一个很复杂的对象,将其拆分成很多个小对象,方便管理对象。
public class Car { //车头 private CarHead carHead; //车身 private CarBody carBody; //车轮 private Wheel wheel; public Car() {} public Car(CarHead carHead, CarBody carBody, Wheel wheel) { super(); this.carHead = carHead; this.carBody = carBody; this.wheel = wheel; } public void run(){ System.out.println("车开着 嘟嘟嘟嘟!!!"); } public CarHead getCarHead() { return carHead; } public void setCarHead(CarHead carHead) { this.carHead = carHead; } public CarBody getCarBody() { return carBody; } public void setCarBody(CarBody carBody) { this.carBody = carBody; } public Wheel getWheel() { return wheel; } public void setWheel(Wheel wheel) { this.wheel = wheel; } } class CarHead{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } class CarBody{ private String name; public void setName(String name) { this.name = name; } public String getName() { return name; } } class Wheel{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
成品类
抽象构建者(Builder)
public interface Builder { //构造车头 void builderCarHead(); //构造车身 void builderCarBody(); //构造轮子 void builderWheel(); //得到构建成品 Car getCar(); }
实际构造者(CarBuilder)
public class CarBuilder implements Builder{ Car car=new Car(); @Override public void builderCarHead() { System.out.println("构建车头!"); car.setCarHead(new CarHead()); } @Override public void builderCarBody() { System.out.println("构建车身!"); car.setCarBody(new CarBody()); } @Override public void builderWheel() { System.out.println("构建轮子!"); car.setWheel(new Wheel()); } public Car getCar(){ return this.car; } }
控制者(Director)
public class Director { private Builder builder; public Director(Builder builder) { System.out.println("控制车组装"); this.builder=builder; builder.builderCarHead(); builder.builderCarBody(); builder.builderWheel(); } }
客户端(Client)
public class Client { public static void main(String[] args) { //制造零件 Builder builder=new CarBuilder(); //组装汽车 Director director=new Director(builder); //获得制造结果 Car car=builder.getCar(); //汽车开始跑 car.run(); } }
构建者模式与工厂模式极为相似,建议还是用应用场景去记。而构建者模式相比于工厂模式它多了一个组装过程,而它的应用场景主要是用于构造一个复杂的对象,而工厂模式主要是专注于生产产品或者生产产品系列。当然,他们也可以结合,工厂模式专注于生产产品系列,而构建者模式专注于控制产品的构造流程,从而制造一个复杂的对象。对于设计模式不要拘泥于文字,主要是一种思想在我们运用的时候信手拈来。
版权声明
作者:邱勇Aaron出处:http://www.cnblogs.com/qiuyong/
您的支持是对博主深入思考总结的最大鼓励。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,尊重作者的劳动成果。
相关文章推荐
- 复杂对象的组装与创建——建造者模式(一):游戏角色设计,建造者模式概述
- 建造者模式-Builder Pattern 复杂对象的组装与创建——建造者模式(二):游戏角色设计的建造者模式解决方案
- 建造者模式(二):游戏角色设计的建造者模式解决方案
- 设计模式 策略模式 以角色游戏为背景
- 设计模式 策略模式 以角色游戏为背景
- 设计模式 策略模式 以角色游戏为背景
- 设计模式 策略模式 以角色游戏为背景
- 设计模式 策略模式 以角色游戏为背景
- 设计模式之策略模式——角色游戏
- 设计模式 策略模式 以角色游戏为背景
- 设计模式 策略模式 以角色游戏为背景
- 设计模式 策略模式 以角色游戏为背景
- 设计模式 策略模式 以角色游戏为背景
- 设计模式 策略模式 以角色游戏为背景
- 复杂对象的组装与创建——建造者模式(一):游戏角色设计,模式概述
- 设计模式 策略模式 以角色游戏为背景
- 设计模式 策略模式 以角色游戏为背景
- 设计模式 策略模式 以角色游戏为背景
- 设计模式 策略模式 以角色游戏为背景
- 设计模式 策略模式 以角色游戏为背景