我在开展一个项目时,我不得不从一个来源获取数据,翻译/储存数据,以便这一数据库能够由另一个来源适当消费。 我认为这是一个相当常见的问题,虽然我相信我会开一个良好的开端,但我却不敢说,如何最好地实施解决办法的中间部分,因为后者负责平整原始数据,并将这些数据提供给我的下一个工作。
请允许我说,我在公司服务器上有一个网络服务,负责接收第三方供应商提供的销售订单。 在供应商要求网络服务之后,我应有一个称作
我已经储存了将数据输入数据库的程序,我甚至创造了与储存的纸浆进行通信的帮助方法。 我也有诸如<代码>IOrder Header、IOrderPayment
等接口,作为这些助手方法所消耗数据的“合同”。
如果在原始<代码>中的数据分类存在良好模式,则Im试图表示。 为<代码>提供数据的目的 IOrder Header et al crosss. 这里,我可以如何直观一下碎片的聚集(稍有帮助的ASCII图表):
________________________________
| |
| Web Service to receive order |
| |
| __________________________ |
|__| |__|
| MyVendor.CustomOrder |
|________________________|
||
||
/
__________________________
| |
| ?????????????????????? |
| Parse |
| MyVendor.CustomOrder |
| and pass data to |
| next step |
| ?????????????????????? |
|________________________|
||
||
/
_________________________
| |
________|________ |
| IOrderHeader | |
|_______________| Methods |
________|________ to |
| IOrderPayment | Add Data |
|_______________| to |
________|________ Database |
| IOrderDiscount| |
|_______________| |
________|________ |
| IOrderItem | |
|_______________| |
|_______________________|
||
||
/
__________________________
| |
| Data Access Layer, |
| Database, etc.... |
|________________________|
我迄今的唯一想法是,使一个能处理一切问题的庞大阶层,可能就是如此:
public class MyVendorCustomOrderParserAndDatabaseUpdater
{
private IOrderItem _IOrderItem;
//other private interface instantiations
public MyVendorCustomOrderParserAndDatabaseUpdater(
MyVendor.CustomerOrder customOrder)
{
ParseOrderIntoInterfaces(customOrder);
}
private void ParseOrderIntoInterfaces(
MyVendor.CustomOrder customOrder)
{
//Parse customOrder into _IOrderItem, etc.
}
public bool SendOrderToTheSystem()
{
//Call the helper methods with the data
//from the private _IOrderHeader, etc. objects
//to update "the system"
}
}
那么,我就用这样的一些法典来消费这个物体:
... = new MyVendorCustomOrderParserAndDatabaseUpdater(
customOrder).SendOrderToTheySystem();
我很想知道,是否有更好的模式来解决这一问题,即从一种格式获取数据,以便在不同的环境中适当消费数据。