什么是模块化

一、模块化定义

一个模块可以认为是一个“软件块”,是一堆代码块的组织集合,但是适用于这一定义的还可以是类,包,构件,服务,甚至是应用。

模块的精确定义:一个软件模块是一个可部署的、可管理的、原生可复用的、可组装、无状态的软件单元,为消费者提供了简明的接口。

定义解释

  .可部署:模块是物理的部署单元,(什么是物理单元后面章节会说到)相比类和包具有更大的粒度

  .原生可复用的:模块是一个进程内复用的单元,与应用或者服务相比,模块不是一种分布式
计算技术,虽然SOA的相关原则可以应用到模块的设计当中,依据个人的理解,SOA是分布式的
多个进程的,而我所讲模块化则是一个进程内共享的。模块一般通过原生(或者可以说本地化,
我理解为非其他第三方框架调用的,例如JNDI)调用来实现复用,模块暴露的操作
总是通过直接的方法调用来使用。

  .可组装:模块可以由其他模块组装而成

  .无状态:模块是无状态的,一个模块只有一个实例。模块中的类可以有状态,可以进行实例化。
  模块本身可以认为没有“实例化”的概念

  Java平台中模块化单元表现为Jar文件。

二、物理设计和逻辑设计

逻辑设计

在过去的十几年里人们喜欢在系统应用设计模式(GOF简称4人帮),好像不会点设计模式就缺少了点技术含量和逼格,这些设计无非就是类的设计(类是抽象还是单例)、包结构、方法、如何面向接口编程、什么时候用到工厂模式等等,这些都是逻辑设计,仅仅只是软件设计和架构的一方面而已。

物理设计

物理设计代表了软件系统中的物理实体,比如:
.软件系统如何打包成可部署的单元
.决定一个类放在哪个部署单元中
.管理部署实体之间的关系

所以:
物理设计是如何将系统分解为几个模块的体系,关乎到系统的模块化。模块化的基本原则是最小化模块之间的依赖同时最大化模块的可复用性。模块化模式需要面向对象模式的支持,物理设计决策通常伴随着并且要求相应的逻辑设计决策。Jar文件是最好的模块化单元。物理设计的原则也可以应用到其他单元,比如包。但是应用到Jar文件才能发挥最大的作用。

三、模块化的两方面

模块化包含两个方面:运行模型和开发模型。
现在模块化开发更多关注于运行时模型,比如现在已经出现一些运行时模块化支持的框架,OSGI。
随着运行时模型的发展,最终开发时模型的重要性会为人们所认识。

运行模型

运行时模型关乎如何在运行时管理模块化的软件系统。Java模块化系统的事实标准是OSGi,目前已经有很多平台通过OSGi来利用模块化的运行时支持,但是通常它们对OSGi进行了封装,对开发者隐藏了模块化的细节。系统快速启动和平台适应性两个特点是这些平台采用OSGi技术的主要原因。

开发模型

开发模型主要涉及开发者如何利用框架来开发软件应用。开发模型可以进一步分为编程模型和设计范型。

标记未完成

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值