深圳网站建设公司为什,网站服务器有哪些类型,七牛云招聘,网站专题报道页面怎么做的有时需要在应用程序中创建一个复杂的对象。 一种解决方案是Factory模式#xff0c;另一种是Builder设计模式。 在某些情况下#xff0c;您甚至可以结合使用这两种模式。 但是在本文中#xff0c;我想研究一下Builder设计模式 。 我需要说的第一件事是创造模式。 在什么情况… 有时需要在应用程序中创建一个复杂的对象。 一种解决方案是Factory模式另一种是Builder设计模式。 在某些情况下您甚至可以结合使用这两种模式。 但是在本文中我想研究一下Builder设计模式 。 我需要说的第一件事是创造模式。 在什么情况下应该使用Builder设计模式 绝对在创建对象时需要大量其他独立对象。 当您想向用户隐藏创建过程时。 在构建过程结束时可以具有不同的对象表示形式。 让我们继续一个代码示例。 模式的UML方案 正如我提到的Builder模式是创造模式。 这种情况意味着在过程结束时会创建一些对象产品。 该产品是在具体构建器的帮助下创建的而该构建器又具有一些父构建器类或接口。 模式的最后一点是Director类它负责为适当的产品创建具体的构建器。 该示例将基于著名的史诗般的电脑游戏-星际争霸。 该产品将扮演狂热分子的角色这是一个简单的神族战斗单位。 导演的角色将扮演网关的角色。 具体的构建者是ZealotBuilder。 我将在下面提供的所有代码 游戏单位的抽象类 public abstract class Unit {protected int hitPoints;protected int armor;protected int damage;public int getHitPoints() {return hitPoints;}public void setHitPoints(int hitPoints) {this.hitPoints hitPoints;}public int getArmor() {return armor;}public void setArmor(int armor) {this.armor armor;}public int getDamage() {return damage;}public void setDamage(int damage) {this.damage damage;}} 狂热者的类别产品 public class Zealot extends Unit {public String toString() {return Zealot is ready!\nHitPoints: getHitPoints()\nArmor: getArmor()\nDamage: getDamage();}} 生成器的界面 public interface UnitBuilder {public void buildHitPoints();public void buildArmor();public void buildDamage();public Unit getUnit();} 构建器接口的实现 public class ZealotBuilder implements UnitBuilder {private Unit unit;public ZealotBuilder() {unit new Zealot();}Overridepublic void buildHitPoints() {unit.setHitPoints(100);}Overridepublic void buildArmor() {unit.setArmor(50);}Overridepublic void buildDamage() {unit.setDamage(8);}Overridepublic Unit getUnit() {return unit;}} 网关导演类 public class Gateway {public Unit constructUnit(UnitBuilder builder) {builder.buildHitPoints();builder.buildArmor();builder.buildDamage();return builder.getUnit();}} 现在让我们看看它如何一起工作 ...public static void main(String[] args) {UnitBuilder builder new ZealotBuilder();Gateway director new Gateway();Unit product director.constructUnit(builder);System.out.println(product);}
... 最后一个代码段的结果是 Zealot is ready!
HitPoints: 100
Armor: 50
Damage: 8 因此如您所见在需要创建复杂对象的情况下Builder设计模式确实很有用。 教程中的示例并不难但是现在您可以想象在什么情况下可以采用这种方法。 您可以在这里找到有关设计模式的更多文章。 参考 设计模式来自JCG合作伙伴 Alexey Zvolinskiy的构建者位于Fruzenshtein的注释博客中。 翻译自: https://www.javacodegeeks.com/2013/06/design-patterns-builder.html