如何用建造者模式重构星际争霸游戏中的英雄单位创建过程?

2026-04-01 08:381阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1257个文字,预计阅读时间需要6分钟。

如何用建造者模式重构星际争霸游戏中的英雄单位创建过程?

本文实例讲述了PHP设计模式之建造者模式。分享给广大开发者参考,具体如下:

在星域中,有许多任务需要完成,也可以自行编辑地图,画面上有各种地形、建筑和部队。存在一个问题,如何构建一个复杂的对象,同时允许客户端代码无需了解内部构造细节?建造者模式应运而生。

建造者模式是一种创建型设计模式,用于逐步构建复杂对象。它将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。

以下是一个简单的建造者模式示例:

phpclass Person { public $name; public $age; public $address;

public function __construct($name, $age, $address) { $this->name=$name; $this->age=$age; $this->address=$address; }

public function __toString() { return Name: {$this->name}, Age: {$this->age}, Address: {$this->address}; }}

class PersonBuilder { private $name; private $age; private $address;

public function setName($name) { $this->name=$name; return $this; }

public function setAge($age) { $this->age=$age; return $this; }

public function setAddress($address) { $this->address=$address; return $this; }

public function build() { return new Person($this->name, $this->age, $this->address); }}

如何用建造者模式重构星际争霸游戏中的英雄单位创建过程?

// 使用建造者模式创建Person对象$personBuilder=new PersonBuilder();$person=$personBuilder->setName('张三')->setAge(25)->setAddress('北京市朝阳区')->build();echo $person;

在这个例子中,`PersonBuilder` 类负责构建 `Person` 对象,客户端代码只需要调用 `setName`、`setAge` 和 `setAddress` 方法,而不需要关心 `Person` 对象的内部构造过程。这使得代码更加灵活、可扩展,并且易于维护。

本文实例讲述了php设计模式之建造器模式。分享给大家供大家参考,具体如下:

星际里面有不少的任务关,也可以自己编辑地图,画面上有各种地形,建筑和部队。
这存在一个问题,初始化画面的流程很乱。

待解决的问题:完成初始化画面的工作,同时尽量减少各种绘制细节的耦合。

思路:既然星际的画面由几个部分组成:地图(就是地形和矿产),建筑,部队。那么我们把他们看成是零件,组装起来就是最后的产品(整个画面)。

建造器(Builder)模式示例:

<?php //规范制造各个零件的接口 interface Builder { //制造地图零件 public function buildMapPart(); //制造建筑零件 public function buildBuildingPart(); //制造部队零件 public function buildArmyPart(); //组装零件 public function getResult(); } //实际建造器类,比如初始化某个任务关 class ConcreteBuilder implements Builder { //制造地图零件 public function buildMapPart() { //根据任务的设定画上地图 echo "地图零件\n"; } //制造建筑零件 public function buildBuildingPart() { //根据任务的设定画上建筑,包括玩家的和敌人的 echo "建筑零件\n"; } //制造部队零件 public function buildArmyPart() { //根据任务的设定画上部队,包括玩家的和敌人的 echo "部队零件\n"; } //组装零件 public function getResult() { //将所有的东西叠加和处理,形成初始化画面 echo "组装零件\n"; } } //监督类,也就是控制绘制流程的类 class Director { //私有属性,确定使用的建造器 private $builder; //构造方法,参数为选定的建造器对象 public function __construct($builder) { //确定使用的建造器 $this->builder = $builder; } //负责建造流程的方法,调用建造器对象的方法,制造所有零件 public function buildeAllPart() { //制造地图零件 $this->builder->buildMapPart(); //制造建筑零件 $this->builder->buildBuildingPart(); //制造部队零件 $this->builder->buildArmyPart(); } } //假设根据任务关,初始化我们需要的实际建造器对象 $concreteBuilder = new ConcreteBuilder(); //初始化一个监督对象 $director = new Director($concreteBuilder); //制造所有零件 $director->buildeAllPart(); //最后让建造器组装零件,生成画面 $concreteBuilder->getResult(); ?>

运行结果:

地图零件
建筑零件
部队零件
组装零件

用途总结:建造器模式可以将流程和细节分离,各司其职。

实现总结:需要一个建造器接口或者抽象类,负责规范各个方法,比如上面的Builder。然后让实际的建造器类去实现所有的方法,比如上面的ConcreteBuilder。同时需要负责流程管理的监督类,比如上面的Director,负责调用建造器的各个零件制造方法。最后让建造器去组装所有的零件。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

本文共计1257个文字,预计阅读时间需要6分钟。

如何用建造者模式重构星际争霸游戏中的英雄单位创建过程?

本文实例讲述了PHP设计模式之建造者模式。分享给广大开发者参考,具体如下:

在星域中,有许多任务需要完成,也可以自行编辑地图,画面上有各种地形、建筑和部队。存在一个问题,如何构建一个复杂的对象,同时允许客户端代码无需了解内部构造细节?建造者模式应运而生。

建造者模式是一种创建型设计模式,用于逐步构建复杂对象。它将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。

以下是一个简单的建造者模式示例:

phpclass Person { public $name; public $age; public $address;

public function __construct($name, $age, $address) { $this->name=$name; $this->age=$age; $this->address=$address; }

public function __toString() { return Name: {$this->name}, Age: {$this->age}, Address: {$this->address}; }}

class PersonBuilder { private $name; private $age; private $address;

public function setName($name) { $this->name=$name; return $this; }

public function setAge($age) { $this->age=$age; return $this; }

public function setAddress($address) { $this->address=$address; return $this; }

public function build() { return new Person($this->name, $this->age, $this->address); }}

如何用建造者模式重构星际争霸游戏中的英雄单位创建过程?

// 使用建造者模式创建Person对象$personBuilder=new PersonBuilder();$person=$personBuilder->setName('张三')->setAge(25)->setAddress('北京市朝阳区')->build();echo $person;

在这个例子中,`PersonBuilder` 类负责构建 `Person` 对象,客户端代码只需要调用 `setName`、`setAge` 和 `setAddress` 方法,而不需要关心 `Person` 对象的内部构造过程。这使得代码更加灵活、可扩展,并且易于维护。

本文实例讲述了php设计模式之建造器模式。分享给大家供大家参考,具体如下:

星际里面有不少的任务关,也可以自己编辑地图,画面上有各种地形,建筑和部队。
这存在一个问题,初始化画面的流程很乱。

待解决的问题:完成初始化画面的工作,同时尽量减少各种绘制细节的耦合。

思路:既然星际的画面由几个部分组成:地图(就是地形和矿产),建筑,部队。那么我们把他们看成是零件,组装起来就是最后的产品(整个画面)。

建造器(Builder)模式示例:

<?php //规范制造各个零件的接口 interface Builder { //制造地图零件 public function buildMapPart(); //制造建筑零件 public function buildBuildingPart(); //制造部队零件 public function buildArmyPart(); //组装零件 public function getResult(); } //实际建造器类,比如初始化某个任务关 class ConcreteBuilder implements Builder { //制造地图零件 public function buildMapPart() { //根据任务的设定画上地图 echo "地图零件\n"; } //制造建筑零件 public function buildBuildingPart() { //根据任务的设定画上建筑,包括玩家的和敌人的 echo "建筑零件\n"; } //制造部队零件 public function buildArmyPart() { //根据任务的设定画上部队,包括玩家的和敌人的 echo "部队零件\n"; } //组装零件 public function getResult() { //将所有的东西叠加和处理,形成初始化画面 echo "组装零件\n"; } } //监督类,也就是控制绘制流程的类 class Director { //私有属性,确定使用的建造器 private $builder; //构造方法,参数为选定的建造器对象 public function __construct($builder) { //确定使用的建造器 $this->builder = $builder; } //负责建造流程的方法,调用建造器对象的方法,制造所有零件 public function buildeAllPart() { //制造地图零件 $this->builder->buildMapPart(); //制造建筑零件 $this->builder->buildBuildingPart(); //制造部队零件 $this->builder->buildArmyPart(); } } //假设根据任务关,初始化我们需要的实际建造器对象 $concreteBuilder = new ConcreteBuilder(); //初始化一个监督对象 $director = new Director($concreteBuilder); //制造所有零件 $director->buildeAllPart(); //最后让建造器组装零件,生成画面 $concreteBuilder->getResult(); ?>

运行结果:

地图零件
建筑零件
部队零件
组装零件

用途总结:建造器模式可以将流程和细节分离,各司其职。

实现总结:需要一个建造器接口或者抽象类,负责规范各个方法,比如上面的Builder。然后让实际的建造器类去实现所有的方法,比如上面的ConcreteBuilder。同时需要负责流程管理的监督类,比如上面的Director,负责调用建造器的各个零件制造方法。最后让建造器去组装所有的零件。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。