gpt4 book ai didi

java - 在 mysql 数据库表中反射(reflect)装饰器模式

转载 作者:行者123 更新时间:2023-11-30 23:15:04 29 4
gpt4 key购买 nike

我正在使用 mysql 数据库和 java。我对装饰器模式的理解是它允许非常灵活的运行时,因为您可以根据需要分配任意数量的装饰器,直到获得所需对象的行为或表示。我之前已经成功编写了几个装饰器,现在我想将装饰对象的状态存储到数据库(最好是 mysql)中。例如:

假设我正在为一家咖啡店编写一个系统,我的代表饮料成本的模型使用了一个装饰器(即具体对象是 espresso ,它可以用牛奶、糖、鲜奶油、糖浆和任何其他它们装饰这些天放入咖啡。)此外,假设我现在无法预测将来我的咖啡中可以含有多少种不同的成分(也许有一天人们会想要在他们的咖啡中加入软心 bean 粒糖,但我还不知道)

现在我想记录每次有人买饮料,并跟踪使用的成分。设计我的数据库模式的最佳方式是什么,以便它可以处理出现的新成分。我目前有两个想法,但似乎都不是正确的方法:

1) 将饮料编码为 json 字符串,然后将其转储到数据库中,假设我的数据访问对象可以处理解码。

2) 尝试预测对饮料的所有可能修改,并为每一个修改列,每次有人提出新的饮料添加时,我都必须更改架构。

一定有比这两种方法都更好的方法。

最佳答案

尝试为此使用 3 个表,一个用于成分,一个用于订单,以及一个介于两者之间的查找表。每次创建订单时,您都会向 orders 添加一行,然后向 orders_ingredients 添加多行

create table orders {
order_id int AUTO_INCREMENT PRIMARY KEY,
order_name
);

create table orders_ingredients {
order_id references orders(order_id)
ingredient_id references ingredients(ingredient_id)
);

create table ingredients {
ingredient_id int AUTO_INCREMENT PRIMARY KEY,
ingredient_name varchar(255)
);

关于java - 在 mysql 数据库表中反射(reflect)装饰器模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18278465/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com