I've never asked anything this general before, and I'm not sure if it's going to sound like I'm asking for someone to do my work for me. I'm an experienced programmer but I'm somewhat new to the kinds of design patterns that get talked about on sites like this.
Synopsis of parameters:
(1) There are 3 external systems that are effectively data stores
System1 - REST System2 - WSDL System3 - COM Interop
(2) Data entities are meaningful in 2 of the systems, moving both to and from (the 2 respective systems)
(3) The whole thing is driven by a synchronization manager app.
Synopsis of implementation:
(4) Data entities are defined by interfaces living in a separate namespace.
IFoo IBar IBaz
(5) Work is done by Utility classes that live in a namespace dedicated to the system.
namespace MyCompany.Integrations.System1 {
public static class Utility {
public static List<IFoo> GetFoos(DateTime since) {...}
public static void SaveBazes(List<IBaz> bases) {...}
}
}
namespace MyCompany.Integrations.System2 {
public static class Utility {
public static void SaveFoos(List<IFoo> foos) {...}
public static List<IBar> GetBars(DateTime since) {...}
}
}
namespace MyCompany.Integrations.System3 {
public static class Utility {
public static void SaveFoos(List<IFoo> foos) {...}
public static void SaveBars(DateTime since) {...}
}
}
Question: What existing patterns, if any, is this similar to and are there any areas I might explore to help me learn how to improve my architecture? I know the Utility classes aren't OO. I haven't figured out how to layout classes to get it done in a simple way yet.
Addition: I thought more and based on one response, I think I was not specific enough. I am hoping someone who had more experience tells me how to apply some OO patterns and get away from Utility classes