node.js中的多态性

我有一个二维matrix0和1 – 分别代表水和土地。 它用来产生Perlin噪声的animationgif(移动的水和波在海岸上碰撞…)。

不过,我希望重构我的代码,并以如下方式使用多态:

对于matrix中的每个元素,基于该值,我希望创build一个新的WaterTile或LandTile(它将表示30×30的像素集合,这些像素既可以是水的蓝色混合物,也可以是绿色/黄色/蓝色的一些组合土地)。

WaterTile和LandTile将inheritance自BaseTile(这是一个抽象类),只有2个variables(x,y代表坐标)和一个draw()方法(这个方法对于BaseTile类什么都不做,它只是在那里,如果它必须被定义)。

子类将重写draw()方法。

地图将是一个二维数组,其元素将是WaterTiles和LandTiles。

之后,在我的主要方法中,我会有这个(伪代码为简单,我是行的索引,j是该行中元素的索引):

foreach (row in matrix) { foreach (element in row) { if (matrix[i][j] == 0) map[i][j] == new WaterTile(); else map[i][j] == new LandTile(); } } 

在此之后,我需要为LandTiles调用更多的方法,然后创build一个新的foreach循环,只需要有

 map[i][j].draw();//invoking draw method based on type 

我知道这可以通过其他方式来完成,但是我希望避免if语句检查types,并根据types调用draw方法,并且执行clean代码并学习新的东西。

如果有人能给我一个简单的例子,我已经看了一些,但没有find我想要的。

将不同的行为放在你已经拥有的if语句中。

或者,只需调用draw方法,并让每个实例执行draw操作。

或者封装一个函数里面的使用。