在我的Django应用程序中,我有一个名为“type”的字段(让我们称之为Foo)。我想使用Foo.type来指示Foo的特定实例是什么类型(可能的选择是“数字”,“日期”,“单行文本”,“多行文本”等等)
有两件事我希望“类型”字段最终影响;值从正常类型转换为文本的方式(例如,在“Date”中,它可能是str(the_date.isoformat())
),以及值从文本转换为指定类型的方式(在“Date”中,它可能是datetime.date.fromtimestamp(the_text)
)。
对我而言,这似乎是战略模式(我可能完全错了,如果我愿意,可以随意纠正我)。我的问题是,在Web MVC框架中对此进行编码的正确方法是什么?
在客户端应用程序中,我将使用抽象方法“serialize()”和“unserialize()”创建一个Type类,覆盖Type的子类中的那些方法(例如NumberType和DateType),并动态设置新实例化的Foo的“type”字段在运行时到相应的Type子类。
在Web框架中,对我来说并不是那么简单。现在,最有意义的方法是将Foo.type定义为小整数字段并定义一组有限的选择(0 =“数字”,1 =“日期”,2 =“单行文本”,等等。在代码中。然后,当实例化Foo对象时,使用Factory方法查看实例的“type”字段的值并插入正确的Type子类(如上段所述)。 Foo还有serialize()和unserialize()方法,它们会直接委托给插件类型的子类。
这个设计听起来如何?我之前从未遇到过这个问题,所以我真的想知道其他人是否有,以及他们是如何解决的。
答案 0 :(得分:0)