设计模式之服务定位器模式

示例:

代码中多处调用同一服务:

package desigenpattern.serviceloactor;

/**
 * 
 * @author zhongming.yuan
 * @date 2014-5-20
 */
public class SmsComponent {
	
	public static void send() {
		System.out.println("Hi,how are you ?");
	}
	
}

package desigenpattern.serviceloactor;

/**
 * 
 * @author zhongming.yuan
 * @date 2014-5-20
 */
public class SmsTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// method send() could be invoke many times
		SmsComponent.send();
		SmsComponent.send();
		SmsComponent.send();
	}

}

使用服务定位器模式:

package desigenpattern.serviceloactor;

/**
 * 
 * @author zhongming.yuan
 * @date 2014-5-20
 */
public interface IService {
	
	void send();
	
}

package desigenpattern.serviceloactor;

/**
 * Service
 * @author zhongming.yuan
 * @date 2014-5-20
 */
public class SmsComponent2 implements IService {

	@Override
	public void send() {
		System.out.println("Hi,how are you ?");
	}

}

package desigenpattern.serviceloactor;

/**
 * Locator
 * @author zhongming.yuan
 * @date 2014-5-20
 */
public class Locator {

	private static IService service; // could be a list of service
	
	public static void register(IService s) {
		service = s;
	}
	
	public static IService getSmsService() {
		return service;
	}
	
}

package desigenpattern.serviceloactor;

/**
 * 
 * @author zhongming.yuan
 * @date 2014-5-20
 */
public class SmsTest2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		SmsComponent2 s = new SmsComponent2();
		Locator.register(s); // register service at the beginning
		
		IService service = Locator.getSmsService(); //use service
		service.send();
	}

}

服务定位器模式详细介绍参考: http://blog.csdn.net/iefreer/article/details/9342519


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值