美文网首页程序员
系统设计模式

系统设计模式

作者: 红绡枫叶 | 来源:发表于2016-03-27 23:14 被阅读251次

  在熟悉语言的语法之后,想要进一步提升,那就是学习设计模式了.在GoF写出设计模式一书开始,之后不断的有设计模式的书籍出版,但是但多数都是在那本书的基础上写的,更多的是对那本书的阐述解释,让刚入门的新手去学习了解运用设计模式.至少我看到的设计模式的大部分图书也没有超出那本书的范围.
  我看过不少的讲设计模式的书,但是看过后那些设计模式我都忘记的差不多.我没办法记住每一个模式,我是觉得那些模式没有讲到更本质.那些总结出来的设计模式更像是公式了.当然设计模式里面也有提到模式的目的是提高系统的可扩展性.对修改关闭,对扩展开放.但是也只是那么一提.然后更多的内容是去讲已有的哪些模式了,以及怎么去应用模式.
  那么软件系统设计的目标我们也差不多清楚,就是实现既有的需求,并且还能够满足未来可能的需求.这就要求系统在设计之初要考虑到可扩展性问题.并且由于是一个复杂的软件系统,对于不是本系统的设计人员,系统架构也应该能让其很容易被理解.这是对模式的一点要求.另外的一点要求,是在构建系统时候,由于目标系统的复杂性,构建时候没有很好的规划极容易导致系统的不稳定,不完善.因此在构建系统时候,需要模式来解决系统内部之间的各个关系的相互作用,使系统这个整体更加健壮.
  好的系统设计一定是清晰界限明确的.系统要被划分为小的子系统,各子系统之间的关系必须稳定明确.在构建复杂系统时候,将整个系统划分为子系统与其关系是简化复杂构建问题的手段之一.子系统又可以划分更小的子系统与其关系,最终解决整个系统构建问题.那么好的系统设计,就归结到子系统与其之间的关系上了.各子系统必须是功能明确,各不交叉,运行稳定.子系统之间的关系也应该是稳定且清晰简单.任何违背以上几点系统设计的要求的系统,必定是有各种各样的缺陷,要么运行不稳定,或者是可扩展性差,亦或是不容易被别人理解.
  除了系统层面的设计,更加接近代码的设计也应该和系统层面的设计是一样,永远都不要构建功能庞杂,关系不明确且古怪的对象及其关系.最重要的原则是保持简单,一次只做一件事情.这样才能保证稳定性及简单性.
  现在从设计软件系统的角度再看设计模式,我们就很清楚了.重要的不是设计模式本身,而是系统设计的最终目的,它才推动了设计模式的发展与演化.我之前看到过一本《元素模式》一书.书中把设计模式都是分解了来看,分解到不能分解的时候会发现,所有的设计模式都可以用一句话总结:设计模式是由类型,对象,方法,数据及其之间的关系组成.
  不弄清楚本原,是不会真正明白设计模式的.

相关文章

  • 策略模式和工厂模式在促销系统下的应用

    策略模式和工厂模式在促销系统下的应用 标签: 设计模式 策略模式 工厂模式 促销系统 php 设计模式为我们提供了...

  • java单例模式与线程安全

    设计模式在软件架构设计中被经常使用,掌握常用的设计模式对于设计软件系统非常重要。单例模式作为设计模式中最简单和常用...

  • 系统设计模式

      在熟悉语言的语法之后,想要进一步提升,那就是学习设计模式了.在GoF写出设计模式一书开始,之后不断的有设计模式...

  • Java技术大纲

    系统架构: 前端浏览器地址的一个 http 请求到后端整个流程 常用的设计模式,23种 哪些设计模式可以增加系统的...

  • 解析-系统设计-设计模式

    设计模式 创建型 简单工厂、工厂方法、抽象工厂 1.工厂是某个创建方法延迟到子类,抽象工厂是 一组成套的方法 封装...

  • Java技术大纲

    系统架构 前端浏览器地址的一个 http 请求到后端整个流程 常用的设计模式,23种 哪些设计模式可以增加系统的可...

  • 设计模式笔记

    懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要. 设计模式之于面向对象系统的设计和开发的作用就犹如数...

  • 装饰者设计模式-RecyclerView添加头部和底部

    引言 装饰者设计模式,装饰者设计模式在Android系统源码中也能经常见到,如IO流、ContextWrapper...

  • S4. 单例模式

    单例模式(Singleton) 介绍 单例模式是创建型设计模式,即用于创建对象的设计。其能够保证当前系统仅存在一个...

  • 设计系统-组织模式

    组织模式,就是把联邦分权制,和职能分权制的积木,粘合在一起的方式。因粘合剂的不同,就有四种典型模式:用信任粘合的羽...

网友评论

    本文标题:系统设计模式

    本文链接:https://www.haomeiwen.com/subject/lxdjlttx.html