leeg810312
2017-05-29 23:53:53 +08:00
注册登录不需要模板,因为只有一个。其他实体的增删改查是类似的话,可以用模板方法。将原来实体对象的字段作为元数据存到一个表,包含唯一标识、字段名、长度、数据类型等,实体数据都存到一个业务表,包含实体数据标识、元数据标识和值,根据业务需要,可能要在元数据表或业务数据表增加字段用来条件查询或分组统计,例如表单 id、时间、操作用户等。当需要操作该实体时,可以在各功能的 controller 中读取相应的元数据和业务数据,由 view 对数据在前端控制,例如数字字段只能输入数字,为 HTML 内容提供一个 HTML 编辑器等,提交数据在 controller 做统一安全校验,然后做业务校验。
模板用统一方式的操作实体,可以减少前端工作量,但缺陷有 3 个:1、物理模型和逻辑模型不一致,如果文档不完善,后期运维会有很大问题,所有业务数据是混杂在一个表里的,不知道业务逻辑根本无法筛查出所需数据。2、所有业务数据存在一个表里,在数据量达到千万或存储达到 TB 性能将遇到明显的瓶颈,若 sql 写得不好,索引优化不当,可能几十万数据就会有性能问题,预计 3-5 年到不了性能瓶颈可以忽略,3-5 年使用后一般会有较多改动需求,可以到时再调整架构重构代码。3、同类功能处理不同实体,如果业务相差很多,就得在一个 controller 写大量不同的业务逻辑,这是很糟糕的情况,所以要预先分析,一个模板只操作相似的,少量的不同可以在 controller 处理。要是你各个实体的业务差别都很大,做成模板反而是得不偿失的,不仅没有一致的实体模型,代码可维护性也不高。
模板方式有利有弊,最好评估一下是否有这样的必要。