Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何决定是将其分为两类还是保留在同一类中?_Javascript_Jquery_Oop_Design Patterns_Class Design - Fatal编程技术网

Javascript 如何决定是将其分为两类还是保留在同一类中?

Javascript 如何决定是将其分为两类还是保留在同一类中?,javascript,jquery,oop,design-patterns,class-design,Javascript,Jquery,Oop,Design Patterns,Class Design,我有一个页面,上面有一些项目的列表。每个项目都有一些属性:注释、图像、标题、注释表单和内容。创建一个名为item的类似乎很简单,它将表示列表中的单个项 但是,我还有一个“孤立”项,用于将新项添加到列表中。例如,它有所有相同的属性、文本框、按钮等,用于添加图像、写入内容等,但它没有存储在数据库中,它有一个新的“添加”按钮,将其保存到数据库中,然后将其添加到列表中 我是否应该只创建一个名为item的类,并只创建一个名为isSaved的属性,以确定是否显示“添加”按钮,是否显示该按钮的注释表单,等等

我有一个页面,上面有一些项目的列表。每个项目都有一些属性:注释、图像、标题、注释表单和内容。创建一个名为
item
的类似乎很简单,它将表示列表中的单个项

但是,我还有一个“孤立”项,用于将新项添加到列表中。例如,它有所有相同的属性、文本框、按钮等,用于添加图像、写入内容等,但它没有存储在数据库中,它有一个新的“添加”按钮,将其保存到数据库中,然后将其添加到列表中

我是否应该只创建一个名为
item
的类,并只创建一个名为
isSaved
的属性,以确定是否显示“添加”按钮,是否显示该按钮的注释表单,等等

或者我应该创建两个独立的类,一个调用
newItem
并将其用于孤立项,另一个调用
savedItem
并将其用于数据库中已经存在的项


另外,这是在javascript中实现的,所以我认为我不能使用太多的继承。

一般来说,当行为或属性需要更改时,您可以创建子类。如果唯一的区别是对象是否保存到数据库中,则很可能不是子类的候选对象。添加一个属性,例如
isSaved
,可能是最好的选择。除非,也就是说,保存/未保存时一个的行为与另一个的行为根本不同。

javascript可以很容易地使用原型或jQuery扩展进行继承。在我看来,您应该将对象的UI与其数据分开。使用“类”保存所有数据,然后将数据绑定到UI元素。不同的是,如果未保存,则需要显示用于输入标题/内容的文本框,而如果保存,则仅显示保存的标题/内容以及用于编辑这些标题/内容的按钮,用于切换文本框,如果只保存注释,则注释表单将可见。您有什么建议?我不确定这是在什么样的环境中创建的,但您所描述的通常是视图代码。我个人的观点(尽管很多其他人都这么认为)是MVC(模型-视图-控制器)体系结构(或其中的一些变体)是构建应用程序的合适方法。如果您保持这种逻辑分离,那么代码无论如何都不属于您的模型。相反,视图将根据
isSaved
是真是假来显示表单或内容。真的,谢谢,这就是答案,我将它分成两个视图,并使用
isSaved
来确定要显示哪个视图。干杯