什么是模块化
来源:互联网 发布:淘宝助理有没有手机版 编辑:程序博客网 时间:2024/05/21 09:07
- 一模块化定义
- 定义解释
- 二物理设计和逻辑设计
- 逻辑设计
- 物理设计
- 三模块化的两方面
- 运行模型
- 开发模型
- 标记未完成
一、模块化定义
一个模块可以认为是一个“软件块”,是一堆代码块的组织集合,但是适用于这一定义的还可以是类,包,构件,服务,甚至是应用。
模块的精确定义:一个软件模块是一个可部署的、可管理的、原生可复用的、可组装、无状态的软件单元,为消费者提供了简明的接口。
定义解释
.可部署:模块是物理的部署单元,(什么是物理单元后面章节会说到)相比类和包具有更大的粒度 .原生可复用的:模块是一个进程内复用的单元,与应用或者服务相比,模块不是一种分布式计算技术,虽然SOA的相关原则可以应用到模块的设计当中,依据个人的理解,SOA是分布式的多个进程的,而我所讲模块化则是一个进程内共享的。模块一般通过原生(或者可以说本地化,我理解为非其他第三方框架调用的,例如JNDI)调用来实现复用,模块暴露的操作总是通过直接的方法调用来使用。 .可组装:模块可以由其他模块组装而成 .无状态:模块是无状态的,一个模块只有一个实例。模块中的类可以有状态,可以进行实例化。 模块本身可以认为没有“实例化”的概念 Java平台中模块化单元表现为Jar文件。
二、物理设计和逻辑设计
逻辑设计
在过去的十几年里人们喜欢在系统应用设计模式(GOF简称4人帮),好像不会点设计模式就缺少了点技术含量和逼格,这些设计无非就是类的设计(类是抽象还是单例)、包结构、方法、如何面向接口编程、什么时候用到工厂模式等等,这些都是逻辑设计,仅仅只是软件设计和架构的一方面而已。
物理设计
物理设计代表了软件系统中的物理实体,比如:
.软件系统如何打包成可部署的单元
.决定一个类放在哪个部署单元中
.管理部署实体之间的关系
所以:
物理设计是如何将系统分解为几个模块的体系,关乎到系统的模块化。模块化的基本原则是最小化模块之间的依赖同时最大化模块的可复用性。模块化模式需要面向对象模式的支持,物理设计决策通常伴随着并且要求相应的逻辑设计决策。Jar文件是最好的模块化单元。物理设计的原则也可以应用到其他单元,比如包。但是应用到Jar文件才能发挥最大的作用。
三、模块化的两方面
模块化包含两个方面:运行模型和开发模型。
现在模块化开发更多关注于运行时模型,比如现在已经出现一些运行时模块化支持的框架,OSGI。
随着运行时模型的发展,最终开发时模型的重要性会为人们所认识。
运行模型
运行时模型关乎如何在运行时管理模块化的软件系统。Java模块化系统的事实标准是OSGi,目前已经有很多平台通过OSGi来利用模块化的运行时支持,但是通常它们对OSGi进行了封装,对开发者隐藏了模块化的细节。系统快速启动和平台适应性两个特点是这些平台采用OSGi技术的主要原因。
开发模型
开发模型主要涉及开发者如何利用框架来开发软件应用。开发模型可以进一步分为编程模型和设计范型。
标记未完成
- 什么是模块化
- 什么是模块化(一)
- 什么是模块化(二)
- 什么是模块化开发?
- 什么是模块化,模块化开发如何实现?
- 什么是前端组件化,模块化?
- 什么是前端模块化?前端模块化开发到底有无必要
- 什么是前端模块化?前端模块化开发到底有无必要
- 软件开发中,什么是模块化开发?
- 在前端中什么是组件化 什么是模块化
- 笔记&讨论:什么是模块化开发以及最基本的应用
- 模块化
- 模块化
- 模块化
- 模块化
- 模块化
- 模块化
- 模块化
- 2.其他小内容合集
- sqlserver join之后如何过滤右表中的某一些数据
- Android Fragment 数据动态更新的问题
- BAT 面试
- 关于android6.0系统源码中出现DeskClock调用v7包中ActionBar其无法用物理按键控制其Tab上焦点的问题
- 什么是模块化
- 盘点2016年人工智能与深度学习领域的十大收购
- 理解 iOS 的内存管理(转)
- 广度优先、深度优先搜索算法——LeetCode
- 重建二叉树
- [Android Studio系列(三)]Android Studio 编译、同步慢的解决方法
- Axis2 service.xml发布webservice 两种配置方式
- Java 类的热替换 —— 概念、设计与实现
- Codeforces Aim Tech Round 3 (Div.2 )B.Checkpoints【思维】