从软件隐喻到设计模式的思考(thinking in software metaphors)

原创 2017年01月03日 15:54:26
  软件开发人员怎么理解软件开发过程具有十分重要的意义,在工作中我经常用房屋建造来比喻和思考软件开发,这样的比喻能够帮助工程师注意开发过程中的潜在问题,对于提高代码质量,提高工作效率,降低技术风险都有重要的作用。
     常见的软件开发过程是为了解决一个显示的问题,针对问题进行需求分析,选定一个或者多个操作系统平台,针对需求进行架构设计,详细设计,经过各种测试之后得到一个符合用户要求的系统。房屋的构建过程和软件的开发过程是及其相似的。首先我们要决定在哪个地方(选择系统平台)创建什么类型(问题定义)的房子,接着我们要找某个建筑设计师探讨我们的设计(架构设计),然后建筑设计师根据实际情况会规划出整个房子的设计蓝图(详细设计),在设计基本完成后又会有景观设计师,油漆工,装修工的介入来完善(优化)我们的房子。最后还有各种人员来验收与查看我们房子的质量和安全设计是否符合要求(测试和审查)。正是因为软件开发和我们的工程或者工业生产具有如此相同之处,软件开发语言也存在着工业级的开发语言之称。
     用房屋设计的思想来理解软件开发的过程具有比较清晰的脉络。
     普通工程设计的大体过程:
     1. 工程模块的划分
     2. 决定自我建造还是外包
     3. 工程对接
     4. 验收
          
     软件开发面向对象编程的大体流程:
     1. 项目分成多个模块,每个模块分成多个类
     2 .决定每个类或者模块是要团队内部设计还是外包
     3.根据类构建出对象,每个对象之间相互配合形成我们的系统
     4.测试与修正

我们可以看出来在oop的设计思想中包含了三个核心的思想,那就是 1.对象的功能划分 2.对象的创建过程 3.对象的协作机制。这三个核心思想其实就是我们编程所强调的设计模式试图通过方法论来解决的问题。设计模式会出现在现在的软件工程设计中其本质是oop设计的需要,本事不先存在着设计模式的条条框框,设计模式只是人们在面向对象编程中的长期总结罢了。
     OOP的设计原则就是把整个系统分成很多个子系统,每个子系统又分为多个对象。设计模式要解决的问题就是把系统以适当的粒度拆分,定义类接口与继承,建立对象之间的基本关系。设计模式的期望:使得OOP立足现在有针对性,面向未来有可扩展性。(低耦合高内聚,复用)

     根据设计模式的核心思想可以如下分类各种设计模式:

对象创建存在的需求:
     (1)复制对象(原型模式)
     (2)限制单一对象(单例模式)
     (3)构建复杂对象(构建者模式)
     (4)功能相同的对象(工厂模式)

对象协作的需求:
     (1)改变接口(适配器模式)
     (2)增加新的功能(装饰模式)
     (3)代理模式
     (4)组合模式
     (5)桥接模式
     (6)外观模式
     (7)享元模式

对象功能划分的需求:

     (1)命令模式
     (2)责任链模式
     (2)解释器模式
     (3)迭代器模式
     (4)中介者模式
     (5)备忘录模式
     (6)观察者模式
     (7)状态模式
     (8)策略模式
     (9)模板方法
     (10)访问者

用设计模式思考 Thinking in Patterns

  • 2008年09月11日 11:26
  • 312KB
  • 下载

《Java编程思想_ 深入理解java虚拟机_Thinking in java__Effiect java__设计模式》学习笔记7——泛型编程基础

转载地址:http://blog.csdn.net/chjttony/article/details/6785221 还有相关的文章:http://blog.csdn.net/waldmer/a...

thinking in java中出现的设计模式代码例子

模板模式 例子一:随机创建不同类型的宠物 测试需要的javaBean类 //: typeinfo/pets/Individual.java package typeinfo.pets; public...

Software Model - 软件架构模式和设计模式

什么是架构?    软件体系结构通常被称为架构,指可以预制和可重构的软件框架结构。架构尚处在发展期,对于其定义,学术界尚未形成一个统一的意见,而不同角度的视点也会造成软件体系结构的不同理解,...

从研究的角度来思考软件设计模式——研究方向

近期在做一些关于软件设计模式的研究工作,通过广泛的收集与阅读,细致的分析与整理,现将设计模式的几个主要研究方向罗列如下: (1) 设计模式的可视化研究(Visualization)       如何在...

Ardupilot SITL(Software in the Loop)软件仿真

参考:http://ardupilot.org/dev/docs/sitl-native-on-windows.html#sitl-native-on-windows 第一步:下载MAVProxy ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从软件隐喻到设计模式的思考(thinking in software metaphors)
举报原因:
原因补充:

(最多只允许输入30个字)