构建餐厅订单的最佳方式是什么(可用的语言是php和javascript)?由于有多个表(你保留的东西......),我想到了在javascript中使用对象。但我对javascript很新,对OOP来说是全新的,所以我不确定这是否是最好的解决方案,以及我的设计是否真的没问题。以下是我的想法:
var order = {
id: 0,
table: 0,
number_of_items: 0,
item: {
name: "",
quantity: 0,
unit_price: 0
},
total: 0
};
答案 0 :(得分:3)
嗯,订单应该独立于表格。实际上,你有一个由座位/客户对象组成的表对象和一个由一个或多个项目组成的订单对象(包含名称,数量,价格或其他任何属于某个项目的项目)。
作为额外的复杂因素,订单可以属于座位(一个人)或一个表(例如,共享开胃菜)。支持这种关系可以让你在尝试编写表格账单时做不同的事情(比如你必须提供拆分支票)。
答案 1 :(得分:2)
您不需要number_of_items,因为您可以从item数组中获取它,因此您需要一个项目数组。
var order = {
id: 0,
table: 0,
items: []
};
理想情况下,您可能希望为项目设置另一个类,并在项目数组中放置它们的列表。
看起来像是:
items = [{name: "", quantity: 0, unit_price: 0}, {...}, {...}]
您可以通过循环遍历数组来获得总数并进行数学计算。
除非数学过于复杂,否则我倾向于不在对象中存储可导出的值,但这正是我所做的。
答案 2 :(得分:1)
我认为你可以废除结构中的一些冗余元素:
var order = {
id: 445221,
table: 42,
items: [
{
name: "Steak",
quantity: 1,
unit_price: 15
},
{
name: "Beer",
quantity: 1,
unit_price: 3
}
]
};
答案 3 :(得分:1)
这是一种方式。
function item(name, price)
{
this.name = name;
this.price = price;
}
function order(id, table)
{
this.id = id;
this.table = table;
this.items = [];
}
order.prototype.countItems = function()
{
return this.items.length;
}
order.prototype.getTotal = function()
{
var total = 0.0;
for(var i = 0;i < this.items.length; i++)
{
total += this.items[i].price;
}
return total;
}
var myorder = new order(1234, 12);
myorder.items.push(new item("coke", 1.25));
答案 4 :(得分:0)
这个怎么样?
order = {
id: <unique identifier>,
table: <table number>,
items : <array of objects as declared below>
}
item = {
item_id: <id of the item in the menu>
instructions : <text>
}
注意:
答案 5 :(得分:0)
有多个表,每个表可以在服务过程中有多个订单。
我认为你的系统的基本组件/对象将是封面本身,包括以下内容:
order_id,表格,课程(至少有一门课程),所选菜肴及其成本,订购时间(这可能看起来不太重要,但通常是 - 好的 - maitre酒店或服务经理)和饮料。
答案 6 :(得分:0)
除了其他答案,特殊的准备方向呢?你想要单独的汉堡食品(汉堡 - 中等稀有,汉堡做得好),或者你想要一个单独的餐桌与烹饪方向链接到该项目?
您的回答确实取决于您的受众群体。它是用于厨房的屏幕,女服务员进入订单,收银员,健康检查员还是以上所有?
答案 7 :(得分:0)
我认为对象的识别需要在任何编码之前进行(抵制编码的冲动)。一些对象包括(一些已经确定):
您还需要内置工作流程(新订单,履行,更新,关闭和付费)......
答案 8 :(得分:-1)
这取决于你将如何编写程序。如果您不使用AJAX,则不需要任何javascript结构。我不使用你使用的语法(我更喜欢在函数中构建类)但是,item应该是复数并且必须是数组。记住这一点,虽然看起来很好有一些OO的东西,如果它增加了复杂性,应该避免。虽然我们在应用程序中使用AJAX,但是我们没有对象的Javascript表示,我们只使用PHP类和Javascript处理它获得的XML数据。只有JS中的类才是小部件。