如何在NodeJS项目中应用OO设计模式?

时间:2017-05-28 01:18:08

标签: javascript json node.js oop design-patterns

我正在NodeJS做一个关于财务控制的项目,该项目使用具有一些“私有”属性(_id_name_parent的帐户(类帐户)模型, _balance_isDeleted)以及一些方法(getter和setter以及其他方法)。

所有创建的帐户(对象)都转换为JSON并存储到文件(自定义数据库)中,但方法除外(仅将属性传递给JSON)。

当我加载数据库文件时,我得到包含所有帐户及其属性的JSON,并需要使用EJS引擎将它们显示在视图页面中。

但是在转换成JSON并加载它们后,他们没有他们的方法来获取他们的私有属性,我想不出任何方式来获取这些信息,除非直接使用属性引用(如{{1} },_id,...)。

如何根据OO设计模式获取这些属性,避免对类的私有属性进行外部引用?

谢谢!

1 个答案:

答案 0 :(得分:2)

开始之前:我不建议将node.js用于金融项目。

JavaScript Number类型是IEEE 754浮点格式的一种实现,这种数字表示不足以操纵财务信息。

请参阅以下文章: Why not use Double or Float to represent currency?

一些解决方法包括使用Int32创建类型化数组,然后将美分而不是美元存入其中,但由于许多原因,这仍然不够好(您可能会在某个时刻阅读这些美分,隐式地将它们转换为漂浮来操纵它们。)

我建议您使用支持定点数字的语言(例如:C#decimal或Java BigDecimal),除非您想要注册一笔巨大的财务和法律责任

有npm模块实现BigDecimal但我会在使用之前仔细测试它们。他们还需要更多的工作和计算资源。