将第三方代码与java中的应用程序分离

时间:2014-07-01 04:23:47

标签: java design-patterns

我有一个使用第三方(外部罐子)的应用程序,并且到处都有。 比方说,我在某个类中有一个方法f

public int f(int x){
Y y = new Y(x);
return y.someCalculations();
}

其中Y是来自第三方的课程。

说我想转移到其他第三方?或者我自己实现Y,我怎样才能解除依赖,以便我可以毫不费力地使用我想要的任何第三方。

提前感谢你

2 个答案:

答案 0 :(得分:7)

适配器模式

使用适配器模式将第三方库类包装到您想要向客户端公开的接口中。

这样客户端将直接使用您正在公开的接口,而不必直接调用第三方库方法。请注意,客户端可以是您自己的应用程序或最终客户端的类。当第三方库发生变化时,这为您提供了屏蔽或断开接口的方法。

Image courtesy - OODesign

Adapter implementation

  

Wrappers用于采用第三方库和框架 - 大多数   使用第三方库的应用程序使用适配器作为中间   应用程序和第三方库之间的层进行解耦   来自图书馆的申请。如果必须使用另一个库   只需要一个新库的适配器,而不必   更改应用程序代码。

答案 1 :(得分:2)

如果第三方库是通用规范的实现。例如JDBC。 然后Factory pattern是合适的。

然而你可能追求的是Delegation pattern。其中涉及围绕第三方编写包装类调用委托给库,因此当库更改时,您只需重写Wrapper。

public class MyWrapperClass{

    private Y y = new Y();

    public int someCalculations(int myParam){
        y.someCalculations(myParam);
    }

}