我正在处理许多可以创建,读取,更新和删除的数据实体,我发现自己编写的代码大致相同。例如,我有时需要将数据输出为JSON,有时以表格格式输出。我发现自己编写了两种不同类型的视图来导出数据。此外,在DB中创建这些实体通常只有SQL语句和输入参数不同。
我正在考虑创建一种策略模式来表示不同的“上下文”。例如,AJAX上下文的read()方法将返回数据为JSON。但是,我想知道其他人是否事先处理过这个问题,并且想知道CRUD操作通常使用什么样的设计模式。
编辑:一个注意事项是,有时复合实体用于构成一个整体;例如,一个位置可以有许多描述,每种支持语言都有一个描述。
答案 0 :(得分:4)
CRUD没有一种模式,有许多重叠/竞争模式。这些CRUD模式的最佳来源之一是:
Martin Fowler's Patterns of Enterprise Application Architecture
一般来说,解决这个特定问题的最好方法是使用ORM(假设一个关系数据存储,在这种情况下看似安全的假设):
http://en.wikipedia.org/wiki/Object-relational_mapping
就通过视图公开您的对象而言,还有一些框架可以帮助解决这个问题,但这些框架特定于您未编写的编码环境。
答案 1 :(得分:2)
不是真正的模式答案 - 抱歉。但我建议使用ORM系统(存储库模式)作为数据库接口。 JPA,Hibernate,iBatis等。您不再需要编写任何SQL。
如果要最小化必须编写的代码量,请尝试使用Grails等框架。 (编写一个包含约30行代码的完整CRUD网站。)您不再需要编写任何样板代码。
答案 2 :(得分:1)
检查ODATA(http://www.odata.org) - 这对于基于HTTP的CRUD具有相当不错的设置 - 包括将批量更新推送到服务器的机制。