`
wfwkiss
  • 浏览: 127169 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
关键字: 软件 模式
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://freej.blog.51cto.com/235241/207983

夜深了,也静了。这是近些天来唯一一次晚上没什么事且过了零点还能抬起眼皮的一个夜晚。最近在忙着设计新项目的一些关键点的架构,还忙着做一个性能优先的内存缓存的原型。自己给自己揽了一堆活,而且还有PL和外派同事(被PL任命为这个项目的负责人)给我的若干任务。时间很紧,不少的纯体力工作,同时也感觉到了一些压力。不过,好在那个内存缓存还是让我比较兴奋,毕竟多少可以做点儿高级点的东西了。来这里已经三个半月了,基本上已经适应了,包括工作节奏和职位职务。近期也不想再理会别的工作机会了,还是集中精力把手头的项目做好。这里的PL和Manager还是不错的,使我工作得比较愉快。

好了,介入正题,又说了很多题外话,但愿屏幕前的那位还没关掉页面。
其实,软件模式这个概念很广。从纯技术方面来讲,有实现模式、设计模式和架构模式等等;从管理角度来说,有开发模式、过程模式以及交付模式等等。这里主要还是探讨技术层面上的模式,管理模式也会稍微带一点,毕竟我在团队管理方面的经验还不是很多。

先说说实现模式。所谓实现模式,就是我们在编程过程中的一些习惯和较好的实现方式。这种模式或多或少的会体现在团队的一些编码规范中。实现模式比较注重细节,它的核心思想是符合良好的编码习惯和较佳的实现规范。目的是,使得团队中的代码风格开起来整齐划一。这有五点好处:一、使得团队成员能够很容易的阅读另一位成员的代码,成员之间很容易进行交叉测试,Leader很容易review代码;二、在后期维护时会领会原有代码的意图,并可以很容易的继续遵循一贯的代码风格加以修改和重构,使得代码甚至软件的风格不受影响;三、可以让新进入的开发者了解团队编码风格并快速融入;四、可以使团队开上去更专业,而不是一群无组织无纪律的散兵。最后,有了这么一套带有良好实现模式的编码规范,就可以是团队在最基本的技术层面上达成一致,可以大大地提高工作效率,避免了无谓的争论。良好的或者趋向良好的团队都应该有自己的编码规范,在书写编码规范时应注意因地制宜的吸收一些参考资料中的公认条款,而且可以根据具体情况加入一些团队内部需要都知晓的原则。比如,我这次在撰写编码规范的时候就加入了很多关于OO的原则和实践方法,以供开发人员参考。

下面来说说设计模式。希望提高自身技能的软件开发人员都会主动地去接触设计模式,因为那是N多前辈们总结出的软件设计的最佳实践参考。我相信真正的高级开发人员都至少读过一本关于设计模式的书。当然软件是善变的,设计模式也是如此。在真正理解和熟练运用设计模式之后,就可以根据自己的需要将原有模式进行演变,甚至创造出更好或更适合当时业务的模式来。设计是灵活的,设计模式只能最佳实践参考。所以,我在这里不想过多地说怎样去用模式去设计软件。因为设计是业务的跟随者,是特定业务的技术级支持。没有了业务依托的代码,最多也只能算是个demo程序而已。现在越多越多的软件和框架的目标都在向更好地实现特定业务转移。这是一个趋势,也是人们对软件设计的观念的进步。计算机是服务于人的,软件理所当然也是。所以在学习设计模式的时候大家不要恪守陈规,要学会为了目的而设计,而不是为了设计而设计。软件是有生命的,至少我坚信这一点。既然有生命就需要成长,从呱呱落地到成熟稳健是需要有一个过程的。所以,不要在一开始就试图去想象软件以后会怎么变。因为在软件行当里,盲目的想象往往都不会成为现实。因而,与其费劲脑汁去过度设计,还不如集中精力优化现有的代码。然后再根据需求的变化而动,只作足够的,不做多余的。

架构模式是更高级的话题。我主要说说我从事WEB系统的架构。现有流行框架,比如:Struts2、Spring和Hibernate,都建议开发人员们把WEB系统的架构很为三层?我是这样理解的:一、使软件的职责分明,比如,展示层主要负责数据的页面展示和用户输入的收集;持久层服务与数据存储介质打交道,负责数据的保存于重用;而控制层负责业务流程的控制、为展示层提供细粒度服务功能、对持久层进行合理调度等等,起到了承上启下的作用;二、各层接口使软件能够以松耦合状态呈现,能够最小化改动带来的影响;三、分层结构使得业务流程清晰,有助于非创建者对软件的理解,有助于其快速了解软件的运行机理。至于其他形式的软件系统,比如:应用程序和C/S软件,最终的架构目的都是为了“高内聚、松耦合”,从而使软件各部件分工明确并能灵活应对变化。架构模式问题很高级,也很繁杂,暂且就说到这里。

再说管理方面的模式,主要说说团队管理。一个的团队的总体水平,往往不是体现在团队成员的技术水平上,而是体现在团队的整体运作上。一个差的团队,往往会计划混乱、做事颠倒,经常加班但还是会拖延交付;而一个运作良好的团队,往往会计划先于执行、措施先于变化,时不常的开会但是照样能漂亮的按时交付。这取决于什么呢?一、高效的开发方法;二、细致的过程控制和管理;三、有效的沟通。当今的开发方法公认优秀的有几种,包括:RUP、Scrum等等,其实都是在上述那三点上做文章,都是要高速迭代、持续集成,并与客户保持高质量的沟通。但是,RUP更注重规避各种潜在风险,而Scrum更明确了去除杂念、按需而动。管理是一门太深的学问,团队管理亦是如此,人的因素占很大的比重。因此,软件管理模式比技术模式要善变得多,也更容易失控。因而需要花费更多精力去把持。

好了,现在是将近凌晨三点,说的也不少了,眼皮也开始打架了。真诚希望能与各位同仁多多交流,互相取长补短,共同进步。希望大家能够积极回帖,咱们一起讨论“软件中的模式”的机理和实践。谢谢大家能够看到最后。

本文出自 “Hyper Mind” 博客,请务必保留此出处http://freej.blog.51cto.com/235241/207983
分享到:
评论

相关推荐

    二十三种设计模式【PDF版】

    2.设计模式是比 J2EE 等框架软件更小的体系结构,J2EE 中许多具体程序都是应用设计模式来完成的,当你深入到 J2EE 的内 部代码研究时,这点尤其明显,因此,如果你不具备设计模式的基础知识(GoF 的设计模式),你很难...

    软件设计模式大作业

    单例模式用于实现蛋糕订购系统的 CakeShop 类,保证整个系统中只有一个 CakeShop 实例。 4. 门面模式 门面模式用于实现蛋糕订购系统的门面类,提供了一个统一的接口来访问不同的蛋糕店。 5. 策略模式 策略模式...

    软件设计模式作业+答案

    在软件设计模式和软件体系结构中,遵循了五个基本原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则指导了软件设计和开发的方向,帮助开发者设计和实现高质量的软件系统。

    浅析23种软件设计模式

    13. 责任链模式:责任链模式的主要思想是在责任链模式中,很多对象由每一个对象对其下家的引用而接起来形成一条链。这种模式的优点是可以使系统更加灵活和可扩展,但缺点是增加了系统的复杂度。 14. 命令模式:命令...

    软件设计模式(java版)习题答案.pdf

    该资源涵盖了软件设计模式的基础知识,包括软件设计模式的概述、UML中的类图、面向对象的设计原则、单例模式、原型模式等。 软件设计模式概述 软件设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码...

    软件设计模式作业三行为式模式

    在设计模式中,类图可以帮助我们清晰地理解各个类的角色和职责,以及它们之间的相互关系。 代码规范是编写高质量代码的重要指导原则,它包括命名规则、注释规范、代码结构等方面,有助于团队协作和代码的可读性。...

    软件设计模式期末作业

    在工厂模式中,当创建对象时,我们不会对客户端暴露创建逻辑,而是提供一个工厂类来负责创建对象。这样,客户端只需要知道具体工厂,而不必了解如何创建产品。例如,可以有一个`饮品工厂`,它根据输入参数决定创建哪...

    软件设计模式实验报告.pdf

    【软件设计模式】是软件开发中的重要概念,它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式是为了解决在软件设计中遇到的一般问题而提出的解决方案,它并不直接解决编程中的具体...

    软件体系结构设计模式作业

    在IT行业中,软件体系结构设计模式是开发高质量、可维护和可扩展的软件系统的关键要素。设计模式是一种在特定上下文中解决常见问题的最佳实践,它为软件设计提供了可重用的解决方案。本作业将深入探讨软件体系结构...

    面向模式的软件体系结构(全)

    它包括了经典的设计模式,如工厂模式、单例模式、观察者模式等,以及它们在软件开发中的应用。此外,卷1还讨论了如何将模式整合到软件开发过程中,以支持迭代和敏捷开发方法。 卷2“用于并发和网络化对象模式”聚焦...

    软件设计模式与体系结构

    第一篇分为8章,介绍了软件体系结构的基础理论,包括软件体系结构的概念及演化、软件建模基础、软件体系结构的形式化、软件体系结构的风格、体系结构的描述语言、软件质量建模、设计模式等内容。第二篇分为4章,首先...

    软件缺陷模式与测试

    本书主要介绍软件缺陷模式与测试: 共分为如下章节: 第1章 软件缺陷与软件缺陷模式 第2章 故障模式 第3章 安全漏洞模式 第4章 疑问及规则模式 第5章 基于缺陷模式的测试技术 第6章 区间运算技术 第7章 路径敏感分析...

    软件设计模式与体系结构(4)多种模式的代码.rar

    在“软件设计模式与体系结构(4)多种模式的代码”中,我们可能找到以下几种经典的设计模式: 1. 工厂模式:这是一种创建型模式,它提供了一种创建对象的最佳方式,通过工厂方法,用户无需知道具体类的实现细节,...

    软件设计模式在嵌入式控制系统中的应用

    随着硬件能力的提升和应用需求的多样化,软件设计模式在嵌入式控制系统中的应用变得越来越重要,它可以提高软件的可复用性、可扩展性及可移植性。 首先,嵌入式系统的定义是围绕特定应用的计算机系统,该系统通常...

    软件设计 模式PDF

    例如,创建型模式中的工厂方法模式允许一个类的实例化过程延迟到其子类;抽象工厂模式提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类;单例模式确保一个类只有一个实例,并提供一个全局访问...

    软件设计模式与体系结构课后习题代码(孙玉山).zip

    设计模式是一种在特定情境下,为了解决软件设计中反复出现的问题而总结出的最佳实践。这些模式是经过验证的解决方案,可以作为开发者之间的通用语言,使得团队能够更有效地沟通和合作。常见的设计模式包括: 1. ...

    软件设计模式与体系结构(期末复习1).rar

    在软件设计模式中,每一个模式都描述了一个在我们周围不断重复出现的问题,以及该问题的解决方案。例如,单例模式确保一个类只有一个实例,并提供一个全局访问点;工厂方法模式允许子类决定实例化哪一个类;而观察者...

    UML及软件设计模式

    设计模式是在特定上下文中解决常见问题的可重用解决方案,它是软件设计中的最佳实践。设计模式提供了一种标准化的方法,帮助开发者避免重复发明轮子,提高代码质量和可维护性。 1. **工厂模式(Factory Pattern)** ...

    软件设计模式

    软件设计模式是软件工程中的重要概念,它是一种在特定情境下解决常见问题的标准化解决方案。设计模式并不是具体的代码或库,而是一种经验总结,代表了软件设计中的最佳实践。通过理解并应用设计模式,开发者可以更...

Global site tag (gtag.js) - Google Analytics