`

Effective Java(一)之服务提供者框架

阅读更多

 一、概念

 

       什么是服务提供者框架?

       多个服务提供者实现一个服务,系统为服务提供者的客户端提供多个实现,并把他们从多个实现中解耦出来(来自百科)。是不是很晦涩呀,其实简单说来就是:提供者为框架的用户提供了多个API实现,框架必须提供一种机制来注册这些实现以便用户能够使用它们;框架的客户直接使用API,无需关心自己到底在使用哪个实现。

 

二、实现原理

 

一般有三个组件组成:

1、服务接口(Service Interface),由服务提供者实现。

2、提供者注册API(Provider Registration API),这是系统用来注册实现,让客户端访问他们的。

3、服务访问API(Service Access API),是客户端用来获取服务的实例的。

4、(可选) 服务提供者接口(Service Provider Interface),这些服务提供者负责创建其服务实现的实例。如果没有Service Provider Interface,可以通过类名进行注册,并通过反射进行实例化。

       下面用UML中的类图表示其中的关系:(对图我就不做说明了,可以对照下面的代码看)

 

 

三、案例

 

      例如JDBC(Java数据库连接,Java Database Connectivity)API。

 

四、自己写的Demo

        1、服务接口(Service Interface)

            服务者接口

             

package com.lzw.service;
/**
 * 服务者接口
 */
public interface IService {
	/**
	 * 实现方法doService4Test1()
	 */
    public void doService4Test1();  
    /**
	 * 实现方法doService4Test2()
	 */
    public void doService4Test2();  
}

 

            服务者实现类

    

package com.lzw.service.impl;

import com.lzw.service.IService;
/**
 * 服务者接口实现类
 */
public class ServiceImpl implements IService {
	/**
	 * 实现方法doService4Test1()
	 */
	public void doService4Test1() {
		System.out.println("do service for test1 ...");
	}
	/**
	 * 实现方法doService4Test2()
	 */
	public void doService4Test2() {
		System.out.println("do service for test2 ...");
	}
	
}

 

       

          2、提供者注册API(Provider Registration API)

             提供者接口

    

package com.lzw.provider;

import com.lzw.service.IService;

/**
 * 
 * 提供者接口
 *
 */
public interface IProvider {
	/**
	 * 
	 * 關聯IService,用來獲取服務者接口(一般用來實現面向接口的編程)
	 */
	public IService getService();
}

 

            提供者实现类

   

package com.lzw.provider.impl;

import com.lzw.manager.ServiceManager;
import com.lzw.provider.IProvider;
import com.lzw.service.IService;
import com.lzw.service.impl.ServiceImpl;
/**
 * 
 * 提供者接口的实现类
 *
 */
public class ProviderImpl implements IProvider {
	/**
	 * 实现静态的注册
	 */
	private static final String DEFAULT_PROVIDER = "test";
	static {
		ServiceManager.registerProvider(DEFAULT_PROVIDER, new ProviderImpl());
	}

	/**
	 * 
	 * 關聯IService,用來獲取服務者接口(一般用來實現面向接口的編程)
	 */
	public IService getService() {
		return new ServiceImpl();
	}

}

 

 

         3、服务访问API(Service Access API)

             服务访问管理类 

    

package com.lzw.manager;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import com.lzw.provider.IProvider;
import com.lzw.service.IService;

public class ServiceManager {
	/**
	 * 私有无参数构造器
	 */
	private ServiceManager() {

	}

	/**
	 * 
	 */
	private static final Map<String, IProvider> providers = new ConcurrentHashMap<String, IProvider>();

	public static void registerProvider(String name, IProvider p) {
		providers.put(name, p);
	}
	/**
	 * 
	 * 关联IService,通过提供者来获取服务者接口
	 * 
	 * 	 */
	public static IService getService(String name) {

		IProvider p = providers.get(name);

		if (p == null) {
			throw new IllegalArgumentException(
					"No provider registered with name:" + name);
		}

		return p.getService();

	}

}

 

          4、客户端测试类

   

package com.lzw;

import com.lzw.manager.ServiceManager;
import com.lzw.service.IService;
/**
 * 
 * 客户端测试类
 *
 */
public class Client {
	/** 
     * @param args 
     * @throws ClassNotFoundException  
     */  
    public static void main(String[] args) throws ClassNotFoundException {  
          
        Class.forName("com.lzw.provider.impl.ProviderImpl");  
        IService service = ServiceManager.getService("test");  
        service.doService4Test1();
        service.doService4Test2();
    }  
}

        一大早起来到现在总算把这个笔记写完了,Congratulation!

  • 大小: 38.5 KB
分享到:
评论

相关推荐

    effective enterprise java 中文版

    总的来说,《Effective Enterprise Java》是一本全面而深入的指南,无论你是初学者还是经验丰富的开发者,都能从中获得宝贵的知识和实践经验,提升你在企业级Java开发领域的专业技能。通过阅读并实践书中的建议,你...

    Effective Enterprise Java

    《Effective Enterprise Java》是一本深度探讨企业级Java应用开发的经典著作。这本书主要针对J2EE(Java 2 Platform, Enterprise Edition)平台,旨在提供一系列实用的编程指导和最佳实践,帮助开发者编写出高效、...

    effective enterprise java

    《Effective Enterprise Java》是一本深度探讨企业级Java开发实践的权威教材。这本书旨在帮助开发者提升在企业级Java应用开发中的效率和代码质量,通过一系列经过验证的编程实践和设计原则,提供了一套实用的指导...

    Effective.Enterprise.Java中文版

    随着Java成为主流计算平台上的首选语言之一,企业和个人都在积极采用Java来构建大型系统。然而,构建这样的系统并非易事,尤其是在处理并发访问、数据一致性和扩展性等问题时。 **核心问题:** - **并发访问策略:*...

    Effective.Enterprise.Java.Chinese

    企业级Java平台技术(如J2EE、Java EE、Jakarta EE)提供了丰富的框架和服务,用于解决企业级应用的复杂问题: - **Web服务与消息通信**:了解SOAP、RESTful API、gRPC等Web服务技术,以及JMS、AMQP等消息通信协议...

    自整理Java关于基础和框架的面试题

    ### 自整理Java关于基础和框架的面试题 #### 基础知识点 ##### JDK常用的包 - **java.lang**: 包含所有基本类,如`String`、`Math`等。...- Spring是一个开源框架,提供了一整套的企业级服务解决方案...

    Effective.Enterprise.Java.中文版PDF和TXT下载

    《Effective Enterprise Java》是一本备受推崇的编程指南,专注于提高Java在企业级应用中的效率和质量。这本书由著名软件工程师撰写,旨在帮助开发者理解和掌握Java平台的核心特性,并提供了一套实用的编程准则和...

    java学习之路,java学习书籍

    Java学习之路是一个全面而深入的探索,尤其对初学者来说,是掌握这门语言的关键所在。Java作为一种广泛应用的编程语言,其重要性不言而喻,不仅在企业级应用开发中占据主导地位,而且在网络服务、移动应用以及大数据...

    关于Java的十大人物和十大产品

    5. **Guy Steele** - 作为Java语言规范的主要撰写者之一,Steele对Java的语法和特性有着深刻影响。 6. **Anne Stepanek** - JavaSoft的早期成员,她在Java教育和推广方面做出了大量工作,推动了Java在全球的普及。 ...

    Effective.Enterprise.Java.Chinese.eBook.CN

    《Effective Enterprise Java》是一本深度探讨企业级Java开发实践的权威书籍,中文版名为《Effective.Enterprise.Java.Chinese.eBook.CN》。这本书由多位经验丰富的Java开发者共同编写,旨在帮助程序员提高Java在...

    java推荐书籍

    - **简介**: Hibernate是Java领域中流行的ORM框架之一,本书提供了丰富的案例和实战经验,帮助读者掌握Hibernate的核心技术。 5. **《Struts 2.1权威指南》** - **简介**: Struts 2是Java Web应用开发中常用的...

    javaAPI中文chm大全

    2. **Java EE**:Java EE是企业级应用开发的平台,它构建在Java SE(标准版)之上,增加了对分布式应用、数据库访问、Web服务等功能的支持。Java EE API帮助文档详细介绍了EJB(Enterprise JavaBeans)、Servlet、...

    java教材

    市面上有许多优秀的Java教材,如《Java核心技术》、《Effective Java》、《Thinking in Java》等,这些书籍覆盖了从基础语法到高级主题的广泛内容,适合不同水平的学习者。此外,网上还有大量的免费资源,如官方文档...

    Java技术进阶书单

    Tomcat是Java Web应用程序中最常用的容器之一,《深入剖析Tomcat》一书详细介绍了Tomcat的工作原理以及内部机制,非常适合对Web容器感兴趣的技术人员。通过阅读本书,Java开发者可以更好地理解Tomcat是如何运行Web...

    Java推荐经典书籍

    《Spring实战》是一本介绍Spring框架的优秀书籍,Spring是企业级Java应用中最流行的开源框架之一。书中通过构建一个完整的示例项目,系统地讲解了Spring框架的各个组件和功能,包括依赖注入、AOP、数据访问、MVC等。...

    经典Java书籍+JavaEE整理资料

    Java是世界上最流行的编程语言之一,尤其在企业级应用开发领域,JavaEE(Java Platform, Enterprise Edition)更是占据了主导地位。本资源包含的经典Java书籍和JavaEE整理资料,为学习和提升Java技术提供了丰富的...

    Java编程培训

    - **主流框架**:进一步深入学习Struts框架,这是Java Web应用中最常用的MVC框架之一。 - **数据持久层**:学习Hibernate框架,用于处理数据持久化问题。 - **应用服务器**:了解并使用Tomcat作为应用服务器部署Java...

    Java的概要介绍与分析

    这种特性使得Java成为企业级应用、桌面应用、移动应用、Web服务、大数据处理、云计算及游戏开发等领域的首选语言之一。 #### 开发工具与集成开发环境(IDEs) 在Java开发过程中,选择合适的集成开发环境(IDE)至...

    java必备知识点大全.pdf

    Java必备知识点大全的内容非常丰富,涵盖了Java语言的基础知识、常用的框架以及数据库的应用等方面,是每一个Java开发者学习和面试时的重要参考。下面是对文档中各个知识点的详细解析。 基础篇: JDK常用的包:Java...

Global site tag (gtag.js) - Google Analytics