软件设计最大的敌人,就是应付需求不断的变化。变化有时候是无穷尽的,于是项目开发就在反复的修改和更新中无限期地延迟交付的日期。变化如悬在头顶的达摩克斯之剑,令许多软件工程专家一筹莫展。正如无法找到解决软件开发的“银弹”,要彻底将变化扼杀在摇篮之中,看来也是不可能完成的任务。那么,积极地面对“变化”,方才是可取的态度。于是,极限编程(XP)的倡导者与布道者Kent Beck提出要“拥抱变化”,从软件工程方法的角度,提出了应对“变化”的解决方案。而本文则试图从软件设计方法的角度,来探讨如何在软件设计过程中,解决未来可能的变化,其方法就是——封装变化。
设计模式是“封装变化”方法的最佳阐释。无论是创建型模式、结构型模式还是行为型模式,归根结底都是寻找软件中可能存在的“变化”,然后利用抽象的方式对这些变化进行封装。由于抽象没有具体的实现,就代表了一种无限的可能性,使得其扩展成为了可能。所以,我们在设计之初,除了要实现需求所设定的用例之外,还需要标定可能或已经存在的“变化”之处。封装变化,最重要的一点就是发现变化,或者说是寻找变化。
GOF对设计模式的分类,已经彰显了“封装变化”的内涵与精髓。创建型模式的目的就是封装对象创建的变化。例如Factory Method模式和Abstract Factory模式,建立了专门的抽象的工厂类,以此来封装未来对象的创建所引起的可能变化。而Builder模式则是对对象内部的创建进行封装,由于细节对抽象的可替换性,使得将来面对对象内部创建方式的变化,可以灵活的进行扩展或替换。
至于结构型模式,它关注的是对象之间组合的方式。本质上说,如果对象结构可能存在变化,主要在于其依赖关系的改变。当然对于结构型模式来说,处理变化的方式不仅仅是封装与抽象那么简单,还要合理地利用继承与聚合的方法,灵活地表达对象之间的依赖关系。例如Decorator模式,描述的就是对象间可能存在的多种组合方式,这种组合方式是一种装饰者与被装饰者之间的关系,因此封装这种组合方式,抽象出专门的装饰对象显然正是“封装变化”的体现。同样地,Bridge模式封装的则是对象实现的依赖关系,而Composite模式所要解决的则是对象间存在的递归关系。
行为型模式关注的是对象的行为。行为型模式需要做的是对变化的行为进行抽象,通过封装以达到整个架构的可扩展性。例如策略模式,就是将可能存在变化的策略或算法抽象为一个独立的接口或抽象类,以实现策略扩展的目的。Command模式、State模式、Vistor模式、Iterator模式概莫如是。或者封装一个请求(Command模式),或者封装一种状态(State模式),或者封装“访问”的方式(Visitor模式),或者封装“遍历”算法(Iterator模式)。而这些所要封装的行为,恰恰是软件架构中最不稳定的部分,其扩展的可能性也最大。将这些行为封装起来,利用抽象的特性,就提供了扩展的可能。
利用设计模式,通过封装变化的方法,可以最大限度的保证软件的可扩展性。面对纷繁复杂的需求变化,虽然不可能完全解决因为变化带来的可怕梦魇,然而,如能在设计之初预见某些变化,仍有可能在一定程度上避免未来存在的变化为软件架构带来的灾难性伤害。从此点看,虽然没有“银弹”,但从软件设计方法的角度来看,设计模式也是一枚不错的“铜弹”了。
分享到:
相关推荐
【接口与封装变化的原理】 在C#编程中,接口(Interface)是一种抽象类型,它定义了一组方法签名,但不包含任何实现。接口的主要作用是提供一种规范,让不同的类能够遵循相同的约定,实现多态性。多态性允许我们...
虽然传统封装形式仍然在某些特定应用中占据主导地位,但随着技术的进步和市场需求的变化,COB封装有望成为未来灯具设计的主流趋势之一。对于灯具制造商而言,了解并掌握这两种封装形式的特点和优势,对于开发更具...
在电子设计领域,Altium Designer是一款广泛使用的PCB(印刷电路板)设计软件,它集成了电路原理...在实际使用中,设计师不仅可以直接使用这些封装,还可以根据需要进行修改或创建新的封装,以适应不断变化的设计需求。
2. 库管理:在Protel DXP中,用户可以通过库管理器访问和管理封装库,包括新建、导入、导出和编辑封装,以适应不断变化的设计需求。 三、封装选择与应用 1. 选择原则:选择封装时,要考虑元器件的实际尺寸、电气...
3. 封装的物理尺寸:SSOP_48封装的宽度和长度尺寸也是设计PCB时必须要考虑到的,机械数据部分给出的尺寸单位有英寸和毫米两种格式,可以按照实际的设计需求和制程能力选择适当的单位进行制作。 4. 封装的制造和检验...
这种封装的电容涵盖了广泛的电容值范围,例如0.47pF到1.0uF,不同的电容值适用于不同的电路需求。例如,0.47pF适用于高频信号处理,而1.0uF则可能用于电源滤波。此外,这些电容还具有不同的容值误差,如±5%,±10%...
《芯片封装技术的发展历程与关键技术解析》 自美国Intel公司在1971年推出首个4位微处理器芯片以来,芯片...未来,随着芯片技术的持续演进,封装技术也将不断创新,以满足日益增长的高性能、高集成度、高可靠性的需求。
标题中的“AD常用元件封装库”指的是Altium Designer(AD)这款专业...在使用时,设计师应根据实际需求选择合适的封装,同时也要注意定期更新库,确保使用到的封装是最新的,以满足不断变化的电子元件标准和设计需求。
半导体封装技术是集成电路制造过程中的最后一个步骤,它对半导体器件的性能、可靠性、成本以及...在不断变化的市场和技术需求驱动下,半导体封装技术不断演进,为半导体产业的发展和电子产品的创新提供了坚实的支撑。
"压敏电阻.PcbLib"文件就是这样的一个封装库,它包含了压敏电阻的不同封装样式,供设计者根据实际需求选择使用。 2D封装代表了元器件在PCB平面上的形状和尺寸,它提供了元器件的布局参考,帮助设计师确保元器件之间...
Altium Designer内置了丰富的元器件库,用户也可以自定义或导入第三方封装库,满足各种项目需求。 3. **封装创建**:设计师有时需要为特定的元器件创建自定义封装。这涉及绘制元件的外形、设定引脚位置和方向,以及...
标题中的“满足供电需求的新型封装技术和MOSFET”是指在现代电子设备中,为了应对不断增长的功率需求和空间限制,工程师们正在利用先进的封装技术和新型MOSFET来提升电源转换效率和功率密度。封装技术的进步使得小...
此外,随着设计需求的变化,可能需要对现有的封装进行修改或创建新的封装,这就需要对Altium Designer的封装编辑器有深入的理解。 封装库的设计遵循一定的规则和标准,如IPC-7351等,这些标准提供了关于引脚尺寸、...
Protel是一款广泛应用于电子设计领域的EDA(电子设计自动...通过理解并运用上述方法,设计者可以更便捷地调整元件封装,以适应不断变化的设计需求。这种方法对于优化设计流程,确保设计的一致性和准确性具有重要意义。
随着技术的发展和项目需求的变化,可能需要对现有的封装进行更新或添加新的封装。因此,定期检查和更新封装库是保持设计效率和质量的关键。 总的来说,"M3铜柱PCB封装库"是电子设计者不可或缺的资源,它为Altium ...
### JEDEC 和 EIAJ 标准下的 IC 封装 #### SOIC 封装概述 **SOIC**(Small Outline Integrated Circuit)是...未来,随着技术的进步和市场需求的变化,更多先进的封装技术将继续涌现,推动电子产品的不断创新和发展。
在当今高度发达的电子产业中,集成电路的封装与器件测试是确保微...随着技术的不断进步和市场的需求变化,封装与测试领域的知识和技术也在不断地更新和发展。对电子工程师来说,掌握这些基础知识和技能是必不可少的。
先进封装技术是推动封装基板需求增长的主要动力之一。例如,大面积的FCBGA封装、SiP/模块封装、堆叠封装以及2.5/3D先进封装技术的应用,都要求采用高密度多层的先进封装基板。这类封装基板可以支持更多的I/O端口和更...
除此之外,封装包还保留了原始Cesium库的功能调用接口,这意味着开发者可以根据需求,灵活地调用未被封装的原生API,以实现更为复杂或特定的功能。这种封装方式兼顾了易用性和扩展性,使得开发人员既可以快速上手,...
在电子设计自动化(EDA)领域,Altium Designer是一款广泛使用的集成电路设计软件,它涵盖了从原理图设计到PCB布局的全...设计师应充分利用这些资源,并根据需要进行适当的定制和管理,以适应不断变化的电子设计需求。