软件设计的复杂度

什么是软件设计的复杂度软件技术发展的使命之一就是控制复杂度(Complexity)。从高级语言的产生,到结构化编程,再到面向对象编程、组件化编程等等。本文介绍通过分解、改善依赖关系,以及抽象的方式来降低复杂度。...
阅读(3995) 评论(1)

[OOD] 隔离变化-桥接模式

使用一个抽象的接口隔离变化,既提高了各层的内聚性,又降低它们间的耦合。符合OO原则中的: 1. 封装变化 2. 针对接口编程,而不针对具体的实现。 3. 降低交互对象的耦合度。...
阅读(1772) 评论(0)

[OOD] 适配器模式

适配器模式常常与桥接模式相比较,两者最大的不同在于解决的问题不同。适配器用于对接两个不同的接口,而桥接则主要为了隔离变化。从应用上来说,一个是被动的,一个是主动的。 所谓被动的,就是当前的接口的差异是无法轻易改变的,必须引入一个中间层来解决。而中间层的引入往往带有性能、以及不必要的数据拷贝等开销,详细参考关于层的反模式讨论。如果接口是可控,就要尽量避免接口不一致的情形。而不是等待使用Adapter来处理。...
阅读(1637) 评论(0)

[OOD] 为什么单一职责原则(SRP)是最难运用的

RP是所有设计原则最简单的,但也是最难运用的。现实工作中,关于一个类是否符合SRP,或者是否有必要符合SRP的讨论是经常发生的。争论的关键在于职责的定义,但我理解SRP真正的核心是关注于变化。...
阅读(2173) 评论(1)

[架构设计] 组件和模块的区别

组件(Component)和模块(Module)又是一对容易混淆的名词,也常常被用来相互替换。个人总结,从设计上来看,组件强调复用,模块强调职责(内聚),或者说组件是达到可复用要求的模块。...
阅读(11589) 评论(1)

[架构设计] 什么是业务逻辑

讨论设计时,专业词汇满天飞,每个人的技术背景、工作经验上的不同都会导致在理解上存在着差异。无论是SEI的定义、OMG UML的定义、还有各路大神的定义,都有从不同视角带来的差异。准备后面关注这些定义的差异,摊开来大家一起来讨论。关于’业务逻辑’, 国内国外争论了很多年了(这篇在07年就说没有清晰的定义),其中几个比较详细的讨论见附录(一定要看评论)。我总结为两类: 一类是逻辑处理论,一类是数据操作论。...
阅读(4211) 评论(1)

用Feature Management补足技术管理

敏捷的执行最容易走样的就是技术管理层面的问题,反而是项目管理的层面被过度强调了。项目管理、质量管理的维度不同,会将产品的不同功能分割成不同的迭代任务,而功能间的关系被忽视了。简单而言就是研发过程的配置管理出现了漏洞。技术管理主要强调管理好功能间的依赖关系,便于系统的分析、追踪,甚至帮助做出重构的决策。 可以使用一个Feature Management的应用来进行管理。...
阅读(1302) 评论(0)

Chromium设计原则总结

文档的思路从需求决定设计开始展开Chromium主要设计特点。从来没有复杂的设计,它们都可以转换为简单的描述。期望能从学习中解开Chromium设计要点。...
阅读(3297) 评论(0)

[Chromium] Chromium Android WebView层的设计

Chromium Android WebView是Chormium专为Android WebView提供一个对Content的封装层。从整体上来看可以理解为一个特殊化的Embedder, 功能可以概括为:   1. 对Content和部分Browser Components封装到Java实现,供AOSP WebView调用实现WebView功能。   2. 实现Android WebView使用的...
阅读(4061) 评论(2)
    个人资料
    • 访问:1524015次
    • 积分:16767
    • 等级:
    • 排名:第617名
    • 原创:221篇
    • 转载:30篇
    • 译文:47篇
    • 评论:362条
    微博/MSN/EMail

    新浪微博:Horky
    QQ:324014340
    Mail:horky.chen@gmail.com
    微信公众号 (聚焦软件开发):
    博客专栏
    最新评论