java如何编写spi接口_如何在Java中实现API / SPI模式?

看看java.util.ServiceLoader类.

一般来说,这个想法是:

API罐

>提供接口

>使用ServiceLoader类来查找实现

装订/司机罐

>实现界面

>创建文件Meta-INF /并指定实现它的类名

javadoc中有一个很好的例子:

API罐

package com.foo;

public interface FooInterface { ... }

public class FooInterfaceFactory {

public static FooInterface newFooInstance() {

ServiceLoader loader = ServiceLoader.load(FooInterface.class);

Iterator it = loader.iterator();

// pick one of the provided implementations and return it.

}

装订罐

package com.myfoo;

public class MyFooImpl implements FooInterface { ... }

Meta-INF/com.foo.FooInterface

com.myfoo.MyFooImpl

编辑

SPI示例

public interface FooSpi {

void accepts(String url);

FooInterface getFooInstance();

}

public class FooInterfaceFactory {

public static FooInterface getFooInterfaceInstance(String url) {

ServiceLoader loader = ServiceLoader.load(FooSpi.class);

Iterator it = loader.iterator();

while (it.hasNext()) {

FooSpi fooSpi = it.next();

if (fooSpi .accepts(url)) {

return fooSpi.getFooInstance();

}

}

return null;

}

}

当然,将文件名更改为com.foo.FooSpi并提供FooSpi的实现.这将允许您将公共API与Spi界面隔离开来.

如果你想隐藏接受方法,你可以永远有一个第二个接口,这是你的公共API,而t

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值