名词介绍
转自 :http://segmentfault.com/blog/zhaoyi/1190000002411255
非侵入性 No intrusive
- 框架的目标之一是非侵入性(No intrusive)
- 组件可以直接拿到另一个应用或框架之中使用
- 增加组件的可重用性(Reusability)
容器(Container)
- 管理对象的生成、资源取得、销毁等生命周期
- 建立对象与对象之间的依赖关系
- 启动容器后,所有对象直接取用,不用编写任何一行代码来产生对象,或是建立对象之间的依赖关系。
IoC
- 控制反转 Inversion of Control
- 依赖关系的转移
- 依赖抽象而非实践
DI
- 依赖注入 Dependency Injection
- 不必自己在代码中维护对象的依赖
- 容器自动根据配置,将依赖注入指定对象
AOP
- Aspect-oriented programming
- 面向方面编程
- 无需修改任何一行程序代码,将功能加入至原先的应用程序中,也可以在不修改任何程序的情况下移除。
分层
表现层:提供服务,显示信息。
领域层:逻辑,系统中真正的核心。
数据源层:与数据库、消息系统、事务管理器及其它软件包通信。
——《企业应用架构模式》P.14
补充
很多代码背后,都是某种哲学思想的体现。
以下引用《面向模式的软件架构》卷1模式系统第六章模式与软件架构
软件架构支持技术(开发软件时要遵循的基本原则)
- 抽象
- 封装
- 信息隐藏
- 分离关注点
- 耦合与内聚
- 充分、完整、简单
- 策略与实现分离
- 策略组件负责上下文相关决策,解读信息的语义和含义,将众多不同结果合并或选择参数值
- 实现组件负责执行定义完整的算法,不需要作出与上下文相关的决策。上下文和解释是外部的,通常由传递给组件的参数提供。
- 接口与实现分离
- 接口部分定义了组件提供的功能以及如何使用该组件。组件的客户端可以访问该接口。
- 实现部分包含实现组件提供的功能的实际代码,还可能包含仅供组件内部使用的函数和数据结构。组件的客户端不能访问其实现部分。
- 单个引用点
- 软件系统中的任何元素都应只声明和定义一次,避免不一致性问题。
- 分而治之
软件架构的非功能特性
- 可修改性
- 可维护性
- 可扩展性
- 重组
- 可移植性
- 互操作性
- 与其它系统或环境交互
- 效率
- 可靠性
- 容错:发生错误时确保行为正确并自行修复
- 健壮性:对应用程序进行保护,抵御错误的使用方式和无效输入,确保发生意外错误时处于指定状态。
- 可测试性
- 可重用性
- 通过重用开发软件
- 开发软件时考虑重用