java 模块开发_java模块化开发
利用java默认作用域实现类限制访问
大多数开发者在创建java类时,往往不假思索就是public,这样意味着所有人都可以访问。这样在大型项目开发中往往造成混乱,导致代码难以维护。
public 类
这是大家熟悉的,即没有限制所有地方都可以访问。
缺省类
针对非内部类,java类的修饰,可以是public和default(默认没有修改关键字)。default方式表示只能在当前包类访问,起到一定的隔离作用。
充分使用缺省类进行业务隔离
针对一个业务系统可以划分为若干个业务模块,针对每个业务模块代码放在相应的包中,除了实体类和需要公开的接口类定义成public,其他类采用默认方式,只能当前业务包中访问。 建议提供对外访问的类可以使用java8 function接口方式进行封装,减少开发工作量。
这样开发的优势有,对外接口和内部接口分离,避免后面业务维护造成耦合度太高。
java 模块化的局限性
一般我们划分项目除了业务方式外,还要从开发角度划分,如DAO层、业务层以及视图层,如果你把他们分别放置不同的包中,则难以实现隔离,因为java包本身没有继承的访问能力。所以OSGI规范针对java的模块化进行加强,eclipse项目即典型的模块化方式开发。
附录:java中public、private、protected、default的区别
在说明这四个关键字之前,我想就class之间的关系做一个简单的定义,对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes(即同一个包),认为都是自己的朋友friendly。
1、public
public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
2、private
private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。
3、protected
protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。
4、default
java的默认访问权限,当没有使用上面提到的任何访问限定词时,就使用它,这种权限通常被称为包访问权限,在这种权限下,类可以访问在同一个包中的其他类的成员,也即可以访问我们前面说的朋友,在包之外,这些成员如同指定了private。
表格形式
作用域
当前类
同一包
friendly
其他包
public
√
√
√
√
protected
√
√
√
×
default
√
√
×
×
private
√
×
×
×
java 模块开发_java模块化开发相关推荐
- 组件化开发和模块化开发概念辨析
网上有许多讲组件化开发.模块化开发的文章,但大家一般都是将这两个概念混为一谈的,并没有加以区分.而且实际上许多人对于组件.模块的区别也不甚明了,甚至于许多博客文章专门解说这几个概念都有些谬误. 想分清 ...
- mysql组件化_组件化开发和模块化开发概念辨析
网上有许多讲组件化开发.模块化开发的文章,但大家一般都是将这两个概念混为一谈的,并没有加以区分.而且实际上许多人对于组件.模块的区别也不甚明了,甚至于许多博客文章专门解说这几个概念都有些谬误. 想分清 ...
- 组件化开发和模块化开发
组件化开发和模块化开发实际上是两种编程思想,也可以被认为是两种解决方案.组件化开发注重重用,可以用作实现基础架构的技术方案.举个例子:加入现在我需要实现一个几何图形库,包括图形的生成.修改.删除等基本 ...
- 前端组件化开发和模块化开发的区别
前端组件化开发和模块化开发的区别 首先,组件化和模块化的意义都在于实现了分治,目前我们开发的项目复杂度不断的上升,早已不是我们一个人能完成的工作,团队合作的话又会产生配合困难等各方面问题,组件化和模块 ...
- Android多模块覆盖率,Android模块化开发中统计aar库的代码覆盖率
现在android 开发都喜欢用模块化的方式,然后以aar文件的方式导入到主项目,但是这对于统计代码覆盖率就有点麻烦了,因为统计时候都忽略这些第三方库,那么我们如何将这些aar文件纳入到代码覆盖率的统 ...
- java web试题_Java web开发经典面试题汇总(内附答案详解)
原标题:Java web开发经典面试题汇总(内附答案详解) 1.说出Servlet 的生命周期,并说出Servlet 和CGI 的区别? 答:Web 容器加载Servlet 并将其实例化后,Servl ...
- java实践项目_Java项目开发实践
第章项目开发基础() 项目开发实训目标() 实训知识目标() 实训能力目标() 实训素质目标() 项目开发技术() 图形用户界面编程技术() 输入输出编程技术() 网络编程技术() 数据结构编程技术( ...
- vue相关的组件化开发和模块化开发及工程化
vue作为当前最流行的前端框架,随着更新迭代,组件化和模块化思想就成为了主流. 大多数招聘信息提到模块化开发,我自己理解vue的模块化:javascript模块化思想是利用es6的 import/ex ...
- java模块化发布选型_Java模块化开发
模块化编程 将程序按照功能分为不同的模块 不同模块的程序写在不同的包中, 共同的代码抽取出来形成Util类,为方便调用一般为static的 项目初期,按照业务功能划分模块,即自上而下的方法.开发的过程 ...
最新文章
- 中國批准英特爾在東北投建晶片廠
- 基于 Laravel Route 的 ThinkSNS+ Component
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 6丨统计各专业学生人数【难度中等】
- mysql每次查询1000条数据库_30多条mysql数据库优化方法,千万级数据库记录查询轻松解决...
- 一个简易的选择小时(时分秒)的插件
- 编程菜鸟的日记-初学尝试编程递归
- php三次握手,深入理解TCP协议及其源代码——三次握手(示例代码)
- ppt讲解中的过渡_ppt过渡页的设计技巧
- 一个完整机器学习项目流程总结
- 本地计算机添加网络打印机共享,共享好的打印机,如何添加到本地来使用?-win7添加打印机...
- An Introduction to Be-trees and Write Optimization 学习笔记
- 徐小贱c语言试卷,纹了这条锦鲤,我遇见了现在的老公 | 纹身大赏No.12
- 字符串匹配和KMP模式匹配(没太学懂,暂时不写)
- Win7系统安装Pycharm专业版
- reactive和ref区别
- docker run --device-write-bps doesn't effect
- python - 文件操作函数练习
- 什么是模块化?为什么要模块化
- my.宝石 --- --- ZC 收集
- 在WPS中MathType7使用出现please restart word to load mathtype addin properly的问题解决方法之一