服务提供者框架

服务提供者框架的构成

        服务接口——服务的提供者去实现这个接口

提供者注册API——系统用来注册实现,提供客户端访问

服务访问API——客户端用来获取服务的实例的


服务提供者接口


整体的流程大致就是,我们客户端需要某个服务,那么必然需要去实现这个服务,而这个服务又是由他的提供者去实现的!

为了客户获得同一个服务的不同实现我们通常通过一个服务管理者去获得这个服务,服务管理者就好比一个大管家,

你通常的情况是告诉管家我我准备要xxx提供的服务,然后管家在自己的账簿中找啊找,找有没有你说的这个名字的提供者

找到了提供者再由提供者将这个服务给管家,管家再给你!


一般的提供者都会把自己注册到管家那里



package com.baobaoyeye.test.psapi;

public interface Service {

	public String read();
	
	public void write(String arg);
}


package com.baobaoyeye.test.psapi;

public interface Provider {
	public Service getService();
}



package com.baobaoyeye.test.psapi;

import java.util.concurrent.ConcurrentHashMap;

public class ServiceManager {
	
	private ServiceManager(){}
	
	private static final ConcurrentHashMap<String,Provider> providers =
			new ConcurrentHashMap<String, Provider>();
	
	public static void registerService(String name,Provider provider){
		providers.put(name, provider);
	}
	
	public static Service getService(String name) {
		Provider p = providers.get(name);
		if(p!=null){
			return p.getService();
		}
		return null;
	}
}
 


package com.baobaoyeye.test.psapi.impl;


import com.baobaoyeye.test.psapi.Provider;
import com.baobaoyeye.test.psapi.Service;
import com.baobaoyeye.test.psapi.ServiceManager;

public class TestProvider implements Provider {

	static{
		ServiceManager.registerService("TestService", new TestProvider());
	}
	
	@Override
	public Service getService() {
		return new ServiceImpl();
	}
	
	class ServiceImpl implements Service{

		private String tmp;
		
		@Override
		public String read() {
			return this.tmp;
		}

		@Override
		public void write(String arg) {
			this.tmp = arg;
		}
	}
}



package com.baobaoyeye.test.psapi;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			Class.forName("com.baobaoyeye.test.psapi.impl.TestProvider");
			Service s = ServiceManager.getService("TestService");
			s.write("hahaha");
			System.out.println(s.read());
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值