`
canonical
  • 浏览: 366678 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[导入]设计的可扩展性

阅读更多
    敏捷思想的流行使得很多人对可扩展设计产生了一种怀疑的态度。这有几方面的原因,一方面是J2EE平台本身提供的分布式机制等技术因素很容易诱导你定义不 必要的扩展需求,第二是基于目前的技术手段对于程序结构的分解仍然有着很大限制,具体的程序实现中往往会引入某种强制依赖,削弱了潜在的可扩展性,第三则 是设计者本身对于技术和业务的把握不够深入,在考虑设计的可扩展性时经常做出错误的判断。但是一个只满足当前需求的系统一般不是个好系统,也很难在多次迭 代生命周期后继续生存。XP(extreme programming)强调简单化,其实质在于简单的东西可以在未来被重构(refactor),从而适应未知的变化,它本身并不排斥可扩展设计。
    从基本的常识出发,我们都知道现在应该为将来做些事情,准备些资本。可扩展设计的价值观不应是现在解决将来的问题,而是寻求未来发展之后现在的解是否仍然 部分有效,是否仍然可以部分被继承。即我们考虑的不是将未来的解纳入到现在的体系中,而是考虑现在的解在未来的体系中的位置。不是在现在如何支持我们所预 想到的几种未来的扩展方式,而是无论未来如何变化,怎样才能保证现在工作的有效性。这里所关注的重点是现在而不是将来!面对演化我们所能采取的最好的策略 就是尽量有所积累,尽量不放弃我们的过去,而不是把宝押在对未来的准确预测上。一个厚重的设计往往在后期会因为预料的太多反而在遭遇未预料到的变化时不知 所措,结果造成系统整体架构的失效,必须做更多的工作打补丁来使得它勉强工作。象EJB这样distribution ready的技术现在已经公认有过度设计之嫌,因为这些已经ready的特性一般并不会被应用但是我们却不得不为这些无用的特性付出代价。
    
    可扩展设计所依赖的基本原则之一是IoC(Inversion of Control)。IoC是目前轻量级容器(lightweight container)的核心设计思想,但其实它的应用远不止在轻量级容器这一领域。基于IoC设计,大量的知识(依赖)被剥离出业务对象本身,对象对于其 生存环境和应用场景的假设大大减弱,而我们的期望正在于无论未来的应用环境如何变化,只要提供必要的知识,业务对象就能工作。可以说,IoC是可扩展性的 一种基本要求。
   
    可扩展设计所依赖的另一个原则是连续性(continuous), 这可比IoC要复杂和深刻的多了。如果说现代设计的核心观念是演化(evolution), 那么在我们的思想中演化到底有着什么样的图景? 至少需要一个方向加上一条连续的途径,evolution才能发生。在级列设计中,一个简单的系统架构需要能够scale up,而一个复杂层次上的系统架构也需要能够以优雅的方式scale down。这种变化是自然的因为它们是连续的。
分享到:
评论

相关推荐

    通用Excel导入设计源程序

    在实现这样一个系统时,设计模式如工厂模式(用于创建不同类型的Excel处理器)、策略模式(用于处理不同数据导入策略)和装饰者模式(用于增加数据处理的灵活性)等,都可能被应用以提高代码的可维护性和扩展性。...

    merge_批量导入MAX.zip,3dmax批量导入obj插件

    通过安装并启用该插件,用户可以一次性导入多个OBJ文件,大大节省了逐个导入的时间。这对于那些需要整合大量外部模型资源的场景,如游戏场景搭建、动画制作等,能显著提高工作效率。 标签中的"插件"指的是这个工具...

    .net 会员导入系统

    在本案例中,.NET被用于创建一个会员导入系统,利用其强大的数据处理和对象模型,确保了系统的稳定性和可扩展性。 会员导入系统的核心功能在于数据导入。通常,餐厅可能已经积累了大量的线下会员信息,如姓名、电话...

    c# 导入Excel 委托 进度条 可复用

    此外,使用接口或抽象类可以进一步提高代码的灵活性和可扩展性。 以下是一个简单的示例代码片段,展示了如何使用委托和进度条来导入Excel文件: ```csharp public delegate void ProgressUpdate(int current, int ...

    SSM搭建的商城毕业设计附带论文与设计文档,导入后即可使用

    SSM框架是Java web开发中常用的三大框架Spring、Spring MVC和MyBatis的组合,它在构建高效、灵活且可扩展的Web应用方面表现出色。本项目基于SSM框架搭建了一个完整的在线商城系统,适用于毕业设计或教学实践,提供了...

    05_将数据导入HDFS.docx

    Flume的设计目标包括可靠性、可伸缩性和可扩展性。Flume代理特性包括每个Flume代理有一个数据源和一个接收器,数据源告诉节点从何处接收数据,而接收器告诉节点在哪里发送数据。通道是数据源和接收器之间的队列,...

    InTouch扩展函数集.zip

    总的来说,"InTouch扩展函数集.zip"是一个非常有价值的资源,它能够帮助Intouch用户丰富其脚本功能,提升项目的可维护性和性能。对于需要处理复杂逻辑或特定任务的Intouch项目,这些扩展函数是不可或缺的工具。

    数据导入的小工具

    而Oracle则是一款功能强大的企业级数据库管理系统,尤其在大型企业中广泛应用,以其高可用性、可扩展性和安全性著称。 数据导入工具的主要功能包括: 1. 数据提取:工具可以从源数据库(例如SQL)中抽取数据,这个...

    航拍影像导入插件

    "航拍影像导入插件"是专为CAD软件设计的一款扩展功能,它允许用户将航拍影像数据无缝集成到CAD设计环境中,极大地提升了设计和分析工作的效率。 这款插件的核心功能是处理和导入航拍影像数据。航拍影像通常由无人机...

    excel通过配置实现导入导出和校验

    4. **灵活性与可扩展性**:通过配置文件实现导入导出和校验,使得系统更加灵活,可以根据业务需求的变化快速调整。只需修改配置文件,无需更改核心代码,大大降低了维护成本。 5. **实际应用**:在项目中,我们可以...

    TXT导入SQL(源码)

    这样的设计使得程序具有良好的可扩展性和适应性,当数据库结构发生变化时,只需要修改XML文件,而无需修改核心代码。 在导入过程中,首先需要解析TXT文件,通常TXT文件每一行代表一条记录,每列数据之间以特定分隔...

    地下管网数据导入程序设计思想.doc

    - 可扩展性:程序应能够处理不同类型和来源的数据,适应未来数据格式的变化。 - 性能优化:处理大量数据时,需要考虑算法效率和内存使用,以减少导入时间。 - 错误处理:建立健壮的错误处理机制,当遇到不合规...

    excel导入mysql 完整版

    而MySQL则是一款开源的关系型数据库管理系统,广泛应用于Web应用程序,因其高效率和可扩展性而备受青睐。将Excel数据导入MySQL,可以帮助用户将静态的Excel文件转化为动态、实时更新的数据库,便于进行复杂的查询和...

    枣品质决策系统——数据导入毕业设计.doc

    在系统设计中,采用了【JavaWeb】作为开发语言,这是因为JavaWeb具有跨平台性、稳定性和可扩展性,能有效处理大量数据和复杂的网络请求。同时,系统遵循了【面向对象的开发思想】,将问题抽象成类和对象,提高了代码...

    C# xml导入sql

    使用接口可以确保任何实现了此接口的类都具有相同的行为,提高了代码的可扩展性和可维护性。 3. **简单工厂模式(Simple Factory Pattern)**: 简单工厂模式是一种创建型设计模式,它提供了一个静态方法来创建...

    excel数据导入mysql工具

    MySQL是一款开源、免费的RDBMS,被广泛应用于Web应用程序和企业级系统,支持高性能、可扩展性和数据安全性。它可以存储大量数据,且提供了SQL语言来执行查询、更新和管理数据,适合处理复杂的数据关系和事务。 ...

    Blender自定义模型文件导入插件

    1. **txt** 文件:这种格式可能源自《3D游戏引擎设计》官网上的GTE项目。GTE(Game Technology Engine)可能是该项目的缩写,它可能是一个用于学习3D游戏开发的教育平台。txt文件可能包含的是模型的顶点、索引、法线...

    影像导入cad

    总的来说,“影像导入CAD”是现代CAD设计中不可或缺的一部分,它利用了数字化图像的力量,为设计师提供了丰富的视觉信息,推动了设计的精确性和创新性。通过合适的插件和正确的操作方法,我们可以轻松地将这些影像...

    影像导入CAD插件.zip

    这就是“影像导入CAD插件”的价值所在,它扩展了AutoCAD的功能,使其能够处理地理空间影像数据。 1. **影像导入**:这个插件可能包含功能,允许用户从各种来源(如卫星、无人机、航拍等)导入JPEG、TIFF、BMP等格式...

Global site tag (gtag.js) - Google Analytics