/* 抽象的建造者:做外卖 */ public interface Bake { /** * 准备烤箱 */ void oven(); /** * 放入烤箱 */ void thePot(); /** * 撒孜然粉 */ void cumin(); /** * 裹上辣椒面 */ void chiliPowder(); } BakeBuilder.java: /* 具体的建造者 */ public class BakeBuilder implements Bake { @Override public void oven() { System.out.println("准备烤箱"); } @Override public void thePot() { System.out.println("将外卖放入烤箱中"); } @Override public void cumin() { System.out.println("撒孜然粉"); } @Override public void chiliPowder() { System.out.println("裹上辣椒面"); } } BakeDirector.java: /* 指挥者 */ public class BakeDirector { private BakeBuilder bakeBuilder; public BakeDirector(BakeBuilder bakeBuilder) { this.bakeBuilder = bakeBuilder; } public void create() { bakeBuilder.oven(); bakeBuilder.thePot(); bakeBuilder.cumin(); bakeBuilder.chiliPowder(); } } Fired.java: /* 抽象的建造者:炸外卖 */ public interface Fired { /** * 烧油 */ void heating(); /** * 下锅 */ void thePot(); /** * 放盐 */ void salt(); /** * 出锅 */ void outPot(); } FiredBuilder.java: /* 具体的建造者 */ public class FiredBuilder implements Fired { /** * 烧油 */ @Override public void heating() { System.out.println("将油烧开"); } /** * 下锅 */ @Override public void thePot() { System.out.println("将外卖放入油锅中油炸"); } /** * 撒盐 */ @Override public void salt() { System.out.println("撒盐"); } /** * 出锅 */ @Override public void outPot() { System.out.println("炸熟后将外卖从油锅中取出"); } } FiredDirector.java: /* 指挥者 */ public class FiredDirector { private FiredBuilder firedBuilder; public FiredDirector(FiredBuilder firedBuilder) { this.firedBuilder = firedBuilder; } public void create() { firedBuilder.heating(); firedBuilder.thePot(); firedBuilder.salt(); firedBuilder.outPot(); } }为什么要用建造者模式
时间: 2024-02-17 15:26:27 浏览: 23
建造者模式的目的是将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。在上述代码中,通过使用建造者模式,可以将外卖的烤和炸过程分别封装成BakeBuilder和FiredBuilder,使得它们的构建过程与表示分离。同时,通过BakeDirector和FiredDirector的create()方法,可以按照不同的顺序组合BakeBuilder和FiredBuilder,从而创建出不同的外卖。这样可以使得代码更加清晰、易于维护和扩展,同时也提高了代码的复用性。
相关问题
unity a* pathfinding project pro插件 如何烘培桥
烘培桥是指将场景中的网格图(NavMesh)生成并保存在磁盘上,以便在运行时进行快速的路径计算。要在Unity中使用A*路径查找算法,需要使用Unity的NavMesh系统,并使用A*寻路插件来执行路径计算。
以下是在Unity中使用A*路径查找算法的步骤:
1. 安装A*寻路插件:从Unity Asset Store中下载并导入A* Pathfinding Project Pro插件。
2. 创建场景:在Unity中创建一个场景,并添加游戏对象和地形。
3. 创建NavMesh:使用Unity的NavMesh系统来创建场景的NavMesh。在场景中选择菜单栏的“Window”->“Navigation”,打开“Navigation”窗口,然后单击“Bake”按钮来烘焙NavMesh。
4. 添加A*路径查找组件:在场景中选择要使用A*路径查找算法的游戏对象,然后右键单击并选择“Add Component”->“A* Pathfinding”->“A* Pathfinding Component”。这将添加一个A*路径查找组件到游戏对象上。
5. 设置路径查找组件:在A*路径查找组件的属性窗口中,设置起点和终点,以及其他路径查找参数,例如搜索半径、移动速度和路径平滑等。
6. 执行路径查找:在游戏运行时,调用A*路径查找组件的路径查找函数来执行路径查找。例如,在脚本中调用“GetComponent<AstarPath>().Scan()”函数来执行路径查找。
7. 显示路径:在游戏运行时,使用A*路径查找组件的路径可视化功能来显示路径。例如,在脚本中调用“GetComponent<AstarPath>().DrawPath()”函数来显示路径。
以上是在Unity中使用A*路径查找算法的基本步骤。通过使用A*寻路插件和Unity的NavMesh系统,可以轻松地实现高效的路径查找功能,从而为游戏开发带来更好的用户体验。
对于model.bake()出现报错IndexError: list index out of range
当您在使用model.bake()方法时,如果出现IndexError: list index out of range的报错,这通常意味着您正在尝试访问列表中不存在的索引。这可能是由于您的列表为空或者您正在访问的索引超出了列表的范围。您可以通过检查您的代码并确保您正在访问正确的索引来解决此问题。如果您不确定哪个索引导致了问题,您可以尝试使用Python的调试器来帮助您找到问题所在。例如,您可以使用pdb模块来逐步执行您的代码并查看每个变量的值,以便找到导致问题的索引。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)