封装服务提供者框架
程序员文章站
2022-06-13 20:22:28
...
服务提供者框架
服务提供者框架(Service Provider framework) :多个服务提供者实现一个服务,系统为服务提供者的客户端提供多个实现,并把他们从中解耦出来(静态工厂方法是服务提供者框架的基础) (来自百度百科)
图解服务提供者框架
下边就写一个例子进行说明
1、服务定义接口
package jdbc;
/**
* 定义服务接口
*/
public interface JDBCInterface {
//连接JDBC
void connectionJDBC();
//断开JDBC
void disConnectionJDBC();
}
2、服务提供者接口
package jdbc;
/**
* 服务提供者接口
*/
public interface JDBCProviderInterface {
JDBCInterface getService();//得到定义的服务实例对象
}
3 、实现定义的服务类
package jdbc;
/**
* 实现服务定义接口
*/
public class JDBCInterfaceImpl implements JDBCInterface {
@Override
public void connectionJDBC() {
System.out.println("连接JDBC");
}
@Override
public void disConnectionJDBC() {
System.out.println("断开JDBC");
}
}
4、实现提供者服务类
package jdbc;
/**
* 服务提供者接口的实现类
*/
public class JDBCProviderInterfaceImpl implements JDBCProviderInterface{
static {
JDBCManager.registerProvider("jdbc",new JDBCProviderInterfaceImpl());
}
@Override
public JDBCInterface getService() {
return new JDBCInterfaceImpl();
}
}
5、注册管理类
package jdbc;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class JDBCManager {
private static final Map<String,JDBCProviderInterface> providers = new ConcurrentHashMap<>();
public static void registerProvider(String name,JDBCProviderInterface providerInterface){
providers.put(name,providerInterface);
}
public static JDBCInterface getService(String name){
JDBCProviderInterface anInterface = providers.get(name);
if(anInterface == null){
throw new IllegalArgumentException("注册失败或未注册");
}
return anInterface.getService();
}
}
6、测试类
package jdbc;
public class Test {
public static void main(String [] args){
try {
Class.forName("jdbc.JDBCProviderInterfaceImpl");
JDBCInterface jdbc = JDBCManager.getService("jdbc");
jdbc.connectionJDBC();
jdbc.disConnectionJDBC();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
7、运行结果
OK,这是服务提供者框架的小Demo 当然运用到项目中肯定不是一件简单的事情,但是他却适合用于与给别人提供模块性的功能,当然它从耦合度来说是非常不错的,值得我们学习和使用,Android 也需要的,虽然我就是Android,OK
上一篇: 常见的网上商城系统开发语言有哪些?
下一篇: 创建服务提供者