- 浏览: 87462 次
- 性别:
- 来自: 龙城
最新评论
-
Fis:
阿呆jinsss 写道 楼主说的简单易懂,最适合我这些理解能力 ...
[原创]AS3.0的自定义事件 -
阿呆jinsss:
楼主说的简单易懂,最适合我这些理解能力差点的人,谢谢了~
[原创]AS3.0的自定义事件 -
Fis:
mengxiaolongcz 写道外层循环 i<arr. ...
去除数组中相同的元素 -
Fis:
mengxiaolongcz 写道外层循环 i<arr. ...
去除数组中相同的元素 -
mengxiaolongcz:
外层循环 i<arr.length-1
里层循环 var ...
去除数组中相同的元素
您想要建立一个迷宫产生程式,迷宫使用二维阵列来定义,0表示道路,1表示墙,2表示宝物,根据所定义的二维迷宫阵列,您想要程式自动产生各种不同材质的迷宫,例如砖墙迷宫,钻石迷宫等等。
您可以在程式中定义两个角色,一个是指导迷宫建立的Director角色,一个是按照指导者指示建立迷宫的Builder角色,Director根据定义的迷宫阵列来指导Builder,只要更换Builder,就可以完成不同材质的迷宫。
可以使用下面的UML 类别图来表示上述的概念:
builder-1.jpg
实际上的程式设计如下:
MazeDirector.java
IMazeBuilder.java
SoliderMazeBuilder.java
DiamondMazeBuilder.java
使用下面的程式来测试一下,它将产生两个迷宫图形:
builder-2.jpg
在迷宫例子中并没有产生或返回产品物件,这视您的需求而定,迷宫例子只是将结果输出至主控台,您也可以设计一个产品物件,或是将结果直接输出为文件。
在 Gof 中有给出了一个不错的例子,以设计文件剖析器为例,该剖析器可以将文件转换为其它的格式,以DOC文件剖析器为例好了,假设希望析剖器可以将DOC文件转换为RTF或是PDF文件,可以如下设计结构:
builder-3.jpg
简单来说,建筑者模式适用的场合,在于使得您可以依赖抽象的建筑蓝图,而实际建造时可以使用不同的实例,这是其之所以命为Builder的原因。
我的小结:Builder模式中,负责控制和组装的类的代码不变,只修改或增加负责构建具体细节的类。用一个地图做比喻的话,可理解成:地图里控制具体单元格的图片那部分类是变动的,而根据地图数据创建单元格的那部分代码或类是不变的。
您可以在程式中定义两个角色,一个是指导迷宫建立的Director角色,一个是按照指导者指示建立迷宫的Builder角色,Director根据定义的迷宫阵列来指导Builder,只要更换Builder,就可以完成不同材质的迷宫。
可以使用下面的UML 类别图来表示上述的概念:
builder-1.jpg
实际上的程式设计如下:
MazeDirector.java
public class MazeDirector { private int[][] maze; private IMazeBuilder mazeBuilder; public void setMaze(int[][] maze) { this.maze = maze; } public void setMazeBuilder(IMazeBuilder mazeBuilder) { this.mazeBuilder = mazeBuilder; } public void buildMaze() { for(int i = 0; i < maze.length; i++) { for(int j = 0; j < maze[i].length; j++) { // 由于mazeBuilder是IMazeBuilder型态 // 所以无论Builder实例为何,这边的程式都无需变动 switch (maze[i][j]) { case 0: mazeBuilder.createRoadBlock(); break; case 1: mazeBuilder.createWallBlock(); break; case 2: mazeBuilder.createTreasureBlock(); break; default: System.out.println("undefined"); } } mazeBuilder.nextRow(); } } }
IMazeBuilder.java
public interface IMazeBuilder { public void createRoadBlock(); public void createWallBlock(); public void createTreasureBlock(); public void nextRow(); }
SoliderMazeBuilder.java
public class SolidMazeBuilder implements IMazeBuilder { public void createWallBlock() { System.out.print("-"); } public void createRoadBlock() { System.out.print(" "); } public void createTreasureBlock() { System.out.print("$ "); } public void nextRow() { System.out.println(); } }
DiamondMazeBuilder.java
public class DiamondMazeBuilder implements IMazeBuilder { public void createWallBlock() { System.out.print("◇"); } public void createRoadBlock() { System.out.print(" "); } public void createTreasureBlock() { System.out.print("* "); } public void nextRow() { System.out.println(); } }
使用下面的程式来测试一下,它将产生两个迷宫图形:
public class Main { public static void main(String[] args) { int[][] maze = {{1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 0, 0, 2, 1}, {1, 0, 1, 0, 1, 0, 1}, {1, 0, 2, 1, 0, 1, 1}, {1, 1, 0, 1, 0, 1, 1}, {1, 0, 0, 2, 0, 0, 1}, {1, 1, 1, 1, 1, 1, 1}}; MazeDirector mazeDirector = new MazeDirector(); mazeDirector.setMaze(maze); System.out.println("Build SolidMaze...."); mazeDirector.setMazeBuilder(new SolidMazeBuilder()); mazeDirector.buildMaze(); System.out.println("Build DiamondMaze...."); mazeDirector.setMazeBuilder( new DiamondMazeBuilder()); mazeDirector.buildMaze(); } }
builder-2.jpg
在迷宫例子中并没有产生或返回产品物件,这视您的需求而定,迷宫例子只是将结果输出至主控台,您也可以设计一个产品物件,或是将结果直接输出为文件。
在 Gof 中有给出了一个不错的例子,以设计文件剖析器为例,该剖析器可以将文件转换为其它的格式,以DOC文件剖析器为例好了,假设希望析剖器可以将DOC文件转换为RTF或是PDF文件,可以如下设计结构:
builder-3.jpg
简单来说,建筑者模式适用的场合,在于使得您可以依赖抽象的建筑蓝图,而实际建造时可以使用不同的实例,这是其之所以命为Builder的原因。
我的小结:Builder模式中,负责控制和组装的类的代码不变,只修改或增加负责构建具体细节的类。用一个地图做比喻的话,可理解成:地图里控制具体单元格的图片那部分类是变动的,而根据地图数据创建单元格的那部分代码或类是不变的。
发表评论
-
我的开发成长日记(1)
2020-02-05 18:11 02018年是个特别的年 ... -
VR开发中用到的技术总结
2017-12-11 14:32 0使用Unity3D开发VR应用有2年了,刚刚接触都朋友和同 ... -
LayaBox flash 转换项目心得
2015-08-28 13:50 4438一、熟悉从as3项目转到js的API和特性差异 1、Simpl ... -
Starling中AssetManager加载文件的流程整理
2015-06-16 20:15 1362Starling做移动开发,会用到大量的纹理和图片素材、X ... -
LayaBox flash 转换项目心得
2015-08-28 13:46 0一、熟悉从as3项目转到j ... -
金武传
2012-12-08 19:28 0丐帮: 萧峰,远,擒龙功,降魔掌,打狗棒法,降龙十八掌* 洪七 ... -
SWFLoader不响应Event.COMPLETE事件
2012-06-25 16:16 1218工作中遇到了一个问题,flex控件SWFLoader解决了 ... -
PHP中的生成XML文件的4种方法
2012-05-02 14:07 1047原文:http://www.oschina.net/code/ ... -
AS3 位运算
2012-04-17 13:04 917原文转至http://www.tangpei.net/2011 ... -
支持参数的事件处理函数
2012-04-11 14:44 3通常情况下,我们使用事件机制时,编写的事件处理函数只需要一 ... -
关于as3运动效果的总结
2012-03-22 18:18 1042看了《ActionScript3.0高级动画教程》一书,用 ... -
ActionScript3高级动画教程笔记
2012-03-14 17:09 8002012.3.14 基本三角函数的计算: 角的正弦值 = ... -
Design Pattern: Adapter 模式 - Class Adapter
2012-03-09 10:42 706Adapter模式的另一种 ... -
Design Pattern: Adapter 模式 - Object Adapter
2012-03-08 16:00 671您的电脑是个旧电脑,新的滑鼠都在使用USB接口了,而您的电 ... -
Design Pattern: Default Adapter 模式
2012-03-08 15:12 990在Java中如果要定义事件处理的方式,必须实作EventL ... -
Design Pattern: Registry of Singleton 模式
2012-03-08 14:23 812考虑使用 Singleton 模式 时拥有子类别的问题,在 ... -
Design Pattern: Singleton 模式
2012-03-08 11:55 824Singleton的英文意义 ... -
Design Pattern: Prototype 模式
2012-03-08 11:13 927您从图书馆的期刊从发现了几篇您感兴趣的文章,由于这是图书馆 ... -
Design Pattern: Factory Method 模式
2012-03-07 20:04 758考虑一个状况,您 ... -
Design Pattern: Abstract Factory 模式
2012-03-07 18:43 924假设您要制作一个对话方块(Dialog)元件,您希望的是这 ...
相关推荐
DesignPattern项目是设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发...
设计模式是软件工程中的一种最佳实践,用于解决在软件设计中常见的...以上就是这个DesignPattern小Demo中可能会涵盖的设计模式,通过这些模式的实例,你可以更好地理解和应用它们到实际项目中,提升你的Java编程能力。
本资源“DesignPattern::pencil:设计模式_java实现以及详解”提供了一套详细的学习材料,帮助开发者理解和应用设计模式。 该资源的作者是“养码青年-Style”,他通过这个项目记录了自己的设计模式学习过程。鼓励...
DesignPattern-master这个压缩包可能包含了一个关于设计模式的项目或者教程资源。 设计模式分为三类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)和行为型模式(Behavioral Patterns)...
"designPattern:设计模式相关代码实现"这个项目,显然提供了不同设计模式在Java语言中的实际应用示例。 在Java世界里,设计模式主要分为三大类:创建型模式、结构型模式和行为型模式。每种模式都针对特定的编程问题...
本资源"DesignPattern:设计模式.net源代码"提供了一套基于.NET实现的设计模式示例,旨在帮助程序员更好地理解和应用这些模式。 在"DesignPattern-master"这个压缩包中,你可能找到的文件结构和内容包括: 1. **...
这个名为"DesignPattern"的压缩包文件很可能包含了一个Java实现的各种设计模式的示例程序。 在这个"DesignPattern-master"目录中,我们可以期待找到一系列与设计模式相关的Java源代码文件(.java),每个文件或...
23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm”供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) 生成...
designpattern design pattern for java 描述: pattern.p001.factory :工厂模式。 pattern.p002.abstractfactory : 抽象工厂模式。 pattern.p003.singletonEH : 单例模式(饿汉式)。 pattern.p003.singletonLH : ...
"DesignPattern:C#设计模式示例"这个资源很可能是包含多个C#实现的设计模式示例代码库。 设计模式通常分为三类:创建型、结构型和行为型。每种模式都解决了特定场景下的问题,并提供了良好的代码组织和扩展性。 ...
单例模式(Singleton)、策略模式(StrategyPattern)、适配器模式(AdapterPattern)、装饰者模式(DecoratorPattern)、抽象工厂模式(AbstractFactoryPattern)、观察者模式(ObserverPattern)、建造者模式...
在本文中,我们将深入探讨设计模式的核心概念,并结合"Head First DesignPattern_src"中的源码,详细解析一些关键的设计模式。 1. 单例模式(Singleton): 单例模式确保一个类只有一个实例,并提供全局访问点。在...
4. 建造者模式(Builder Pattern): 建造者模式将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。在C#中,建造者模式常用于创建复杂的对象,比如GUI组件或数据库记录,通过分离构造过程和表示...
本项目"designPattern:练习设计模式"提供了一个学习和实践各种设计模式的平台。 1. **单例模式**:确保一个类只有一个实例,并提供一个全局访问点。在Java中,单例模式通常通过双重检查锁定、静态内部类或枚举来...
设计模式是软件工程中的一种最佳实践,它是在特定情境下解决常见问题的经验总结。...在DesignPattern-master这个压缩包中,你可以找到关于这些模式的详细讲解和实例代码,为你的Java开发之旅提供宝贵的参考资料。
这个名为"DesignPattern:有关设计模式的一些演示"的项目,可能是为了帮助开发者理解和应用各种设计模式。 设计模式分为三大类:创建型、结构型和行为型。创建型模式关注对象的创建过程,如单例(Singleton)、工厂...
"Design*Pattern*Framework*4.5" 可能指的是一个基于 .NET Framework 4.5 的设计模式实现或教程集合。 设计模式是经验丰富的软件开发者的智慧结晶,它们被分为三类:创建型、结构型和行为型。创建型模式涉及对象的...
本资源"Design-Pattern:设计模式(Java实现)"涵盖了多种经典的设计模式,通过Java语言进行了具体实现,旨在帮助开发者更好地理解和应用这些模式。 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。在...
最后,还有建造者模式(Builder)用于分步骤构建复杂对象,隔离对象的构造过程,使得构造过程和表示分离。 以上只是部分设计模式的简介,Head First 设计模式书中详细讲解了23种经典设计模式,每种模式都有实际的...