這是一個非常簡單和常見的情況。參考GoF模式適配器,抽象工廠和代理。
[編輯:添加更多的代碼來幫助說明解決方案]
您需要定義自己的API(或抽象接口)表示,任何第三方API需要提供給您的應用程序的功能。
IPancakeMaker
{
Pancake MakePancake(decimal radius);
}
然後編寫實現該接口,並取決於您當前的第三方API提供者...
WalmartPancakeMaker : IPancakeMaker
{
Walmart3rdPartyAPI _w3paPancakeMaker = new Walmart3rdPartyAPI(string apiKey);
// ... set 3rd party settings, defaults, etc
// Implement IPancakeMaker
public Pancake MakePankcake(decimal radius)
{
Walmart3rdPartyPancakeEntity thirdPartyPancake = _w3paPancakeMaker.BakeMeACakeJustAsFastAsYouCan(radius);
return this.ConvertToPancakeInMyDomain(thirdPartyPancake);
}
}
創建服務類(或一些其他業務流程),以控制與您的供應商互動,使用依賴注入,以避免緊密耦合的提供商...
public class MakePancakesService
{
IPancakeMaker _pancakeMaker = null;
// Constructor takes the concrete Provider of IPancakeMaker
// Your calling code is not aware of the actual underlying API
public MakePancakesService(IPancakeMaker pancakeMaker)
{
_pancakeMaker = pancakeMaker;
}
}
使用流行的DI框架,如統一或StructureMap。
http://unity.codeplex.com/
http://structuremap.net/structuremap/
你提供你目前正在使用和想的方法來抽象或本isalready試圖抽象? – sll