我有一个应用程序所需的小组件。加载csv文件,然后根据找到的数据更新客户记录的组件。每个客户更新都会有一个单独的csv文件。
而已。
但是,我在完成此操作的两种方法之间陷入了困境。
以下哪项是正确的解决方案,或者还有其他更好的解决方案吗?
如果您正在考虑真正的总体设计,请考虑以下事项:
UpdateSet
:更新列表。CSV文件(如果需要)。UpdateInstance
:从请求的角度来看,不同类型的更新。CSV行(如果需要)。InsertInstance
:器物UpdateInstance
。插入请求。DeleteInstance
:器物UpdateInstance
。删除请求。类ChangeInstance
:器物UpdateInstance
。更新请求。
接口UpdateSetBuilder
:UpdateSet
从某处产生一个。
CSVUpdateSetBuilder
:UpdateSetBuilder
通过读取CSV文件实现。可能是单例对象。UpdateParser
:接受CSV行并产生一个UpdateInstance
(或拒绝它)。InsertParser
:器物UpdateParser
。可能是单例对象。检测并解析插入请求。DeleteParser
:器物UpdateParser
。可能是单例对象。检测并解析删除请求。ChangeParser
:器物UpdateParser
。可能是单例对象。检测并解析更新请求。不同的UpdateParser
s在上注册,CSVUpdateSetBuilder
并通过委托机制进行选择(即,依次为每个s赋予识别记录的机会,如果它返回null,则UpdateParser
给予下一个机会)。
Updater
:的集合CustomerRecords
并对其应用UpdateSet
。UpdateTypeDoer
:从执行角度来看,不同类型的操作。InsertDoer
:器物UpdateTypeDoer
。检测InsertInstance
对象并将其应用于数据。DeleteDoer
:器物UpdateTypeDoer
。检测DeleteInstance
对象并将删除请求应用于数据。ChangeDoer
:器物UpdateTypeDoer
。检测ChangeInstance
对象并将更新请求应用于数据。不同的UpdateTypeDoer
s在上注册,Updater
并通过委托机制进行选择(即,依次为每个变量赋予识别记录的机会,如果返回空值,则UpdateTypeDoer
给予下一个机会)。
优点:非常灵活,并且易于演化和修改(添加新数据源,更新类型等)。缺点:在设计和实施时间方面的巨额投资可能永远无法收回。您是否要添加更新类型?不同的数据源?文件格式?
我一直认为,在设计和编程中,您可以无休止地做两件事:抽象和间接。知道多少就是太少,多少才是真正的艺术。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句