SPI

簡稱:Service Provider Interfaces ,目的是定義個服務接口,具體的實現由對應的服務商提供,然後根據SPI規範去獲取對應服務提供者的實現

使用場景:開源程序,支持將來需要擴展的種類業務,JDBC,apache common日誌

package com.jack.test;

public interface LogHandle {
 public String handleLog(String log);
}
package com.jack.test;

public class LinuxLogHandle implements LogHandle {

	@Override
	public String handleLog(String log) {
		// TODO Auto-generated method stub
		return "linux-------------------"+log;
	}

}
package com.jack.test;

public class WindowsLogHandle implements LogHandle {

	@Override
	public String handleLog(String log) {
		// TODO Auto-generated method stub
		return "windows-------------------"+log;
	}

}
//打成jar丟到
//新建一個工程
package com.jack.spitest;

import java.util.Iterator;

import java.util.ServiceLoader;

import com.jack.test.LogHandle;

public class Test {
	public static void main(String[] args) {
		System.out.println("test start     .......");
		ServiceLoader<LogHandle> peoples = ServiceLoader.load(LogHandle.class);

		Iterator<LogHandle> iterator = peoples.iterator();
		while (iterator.hasNext()) {

			LogHandle people = iterator.next();

			System.out.println(people.handleLog("test"));

		}
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章