java基础-模块使用

java基础-模块使用

一. 概述

模块就是代码和数据的封装体。模块的代码被组织成多个包,每个包中包含Java类和接口;模块的数据则包括资源文件和其他静态信息。通过模块拆分,使应用程序模块化.

二. 模块使用

  1. 创建模块

在项目目录下创建模块mymod1/src,mymod2/src

mymod1:
	com.qiyun.student
		Student.java
        
mymod2:
	com.qiyun.teacher
	Teacher.java

mytest:
	TestMain.java
  1. 模块使用

    模块导出:在需要到处模块mymod1/src目录下创建module-info.java进行声明

module mymod1{
	exports com.qiyun.student;
}

​ 模块导入: 在需要使用模块mymod1的mytest模块下进行导入,在mytest/src目录下创建modele-info.java

module mytest{
    requires mymod1;
}

然后就可以在mytest中调用模块mymod1下的类.

三. 模块服务使用

java6, 允许服务提供这与服务使用者之间完成解耦, 即服务使用者只面向接口编程,不清楚服务提供者的实现类.

java9, 允许将服务接口定义一个模块中, 使用uses语句来申明该服务接口, 然后针对该服务接口提供不同的服务实现类.这些服务实现类可以分布在不同的模块中,服务实现模块使用provides语句未服务接口指定实现类. 服务使用者只需要面向接口编程即可.

  1. 模块使用步骤

在mymod1模块下创建包com.qiyun.modservice, 在改包下提供接口,接口定义一个抽象方法

public interface MyService{
    void service();
}

在com.qiyun.modservice包下创建mymodservice包, 包里面实现两个MyService接口的类.

public class MyserviceDome1 implements MyService{
    @Override
    public void service(){
        system.out.println("This is MyserviceDemo1")
    }
}
public class MyserviceDome2 implements MyService{
    @Override
    public void service(){
        system.out.println("This is MyserviceDemo2")
    }
}

导出包

module mymod1{
	exports com.qiyun.student;
    //模块导出
    exports com.qiyun.mymodservice;
	//指定MyService的服务实现类是MyserviceDemo2
    provides MyService with MyserviceDemo2;
}

在myTest模块下使用Myservice 服务接口

module myTest{
    requires Mymod1;
    uses MyService;
}
public class Test{
    public static void main(){
        ServiceLoader<MyService> myService = ServiceLoader.load(Myuservice.class);
        for(MyService my : myServices){
            my.service();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值