node.js中的多态性

node.js中的多态性,node.js,Node.js,我有一个二维矩阵,0和1分别代表水和土地。它用于生成带有柏林噪声的动画gif(移动的水和海岸上的波浪碰撞…) 然而,我希望重构我的代码并以以下方式使用多态性: 对于矩阵中的每个元素,基于该值,我希望创建一个新的WaterTile或LandTile(它将表示一组30x30像素,其中蓝色表示水,绿色/黄色/蓝色表示土地) WaterTile和LandTile将从BaseTile继承(这是一个抽象类),只有2个变量(x,y表示坐标)和一个draw()方法(BaseTile类的此方法不做任何事情,如果必

我有一个二维矩阵,0和1分别代表水和土地。它用于生成带有柏林噪声的动画gif(移动的水和海岸上的波浪碰撞…)

然而,我希望重构我的代码并以以下方式使用多态性:

对于矩阵中的每个元素,基于该值,我希望创建一个新的WaterTile或LandTile(它将表示一组30x30像素,其中蓝色表示水,绿色/黄色/蓝色表示土地)

WaterTile和LandTile将从BaseTile继承(这是一个抽象类),只有2个变量(x,y表示坐标)和一个draw()方法(BaseTile类的此方法不做任何事情,如果必须定义它,它就在那里)

子类将重写draw()方法

地图将是一个二维数组,其元素将是水砖和地砖

之后,在我的主方法中,我将有以下内容(为了简单起见,伪代码,I是行的索引,j是该行中元素的索引):

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

map[i][j].draw();//invoking draw method based on type
我知道这可以通过其他方式实现,但我希望避免使用if语句检查类型并根据类型调用draw方法,同时练习干净的代码并学习新的东西


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

把不同的动作放在你已有的If语句中

或者,只需调用draw方法,让每个实例执行它对draw所做的操作


或者将if封装在函数中并使用它。

问题是什么?你需要一个关于javascript继承的教程吗?编辑了Q。一个简单的例子就可以了,我发现了一些,但它们不是很有帮助。我正在寻找一种在node中实现这一点的传统方法(3个文件用于3个Tile类,带有导出),我发现的例子要么有点太复杂(并且令人困惑),要么对于普通的javascriptProblem,你必须更具体一些。有成千上万的javascript继承教程。另外,由于这是javascript,您甚至不需要继承任何东西,javascript duck类型的对象,这意味着只要对象实例中有
draw
方法,您就可以调用它而无需任何继承。现在的问题太宽泛了,有太多好的答案。我投票决定关闭它。有没有可能撤销它?我离开SO有一段时间了,只是试着问一个新问题,我发现我不能问问题。。。我知道我可以做1),但是我在2个for循环之间有更多的功能,所以这不是一个选项。2) 这就是我想做的,我只是想知道这样做是否“合适”和可行
map[i][j].draw();//invoking draw method based on type