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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值