有一个Excel数据上报系统,有不同的模板。
有两种解决方案:1.让用户针对不同的模板建表,并且用元数据对这些表进行管理(我们公司叫编目);2.系统针对每个模板建一个表。
第一种方案代码量少,但是不够灵活,要求模板比较规范,比如不能有合并单元格的情况(如果有,则必须有简单、明确的合并规则)。如果某个模板有特定的业务要求,则可能需要修改整个设计,违背了开闭原则,破坏了系统的正交性。
第二种方案代码量多,但是灵活,能够应对各种奇葩模板。一个模板有特殊业务要求,只需要修改处理该模板的代码,不会影响到其他模板,符合开闭原则,保证了系统的正交性。如果各个模板存在通用处理模块,可以使用继承或者组合尽量避免重复代码。
第一种方案属于统一处理,这种方案适合业务很规范、有固定标准的系统,一般达到这种要求的系统可以做成产品了。
第二种方案属于分而治之,这种方案适合业务复杂多变无标准且未来未知的系统。