`
javawebsoa
  • 浏览: 408971 次
社区版块
存档分类
最新评论

设计方法(间接法与软件设计模式)

阅读更多

从更高的层次来思考设计模式其实就是方法论的范畴,对于现在流行的软件设计模式来讲,对其介绍的出发点大部分都处在程序设计层面.设计模式本身属于方法学层面,是人们在对现实世界的认知和改造过程中总结而来,因此,这些方法无论是在软件设计还是硬件设计,甚至是其它领域的设计都是适用的,是跨学科和跨领域的方法学.
现实世界的对象之间的关系是非常复杂的,在4维空间下,对于对象之间的关系可以简单的分为静态关系和动态关系(这里的4维是指三维空间+一维时间),静态关系表达的是对象之间的位置(在4维空间下),而动态关系表达的是对象之间的相互作用(行为,通信),今天讨论的间接法就是处理对象之间动态关系的一种简单而朴素的方法.由于对象之间的相互作用非常复杂,很多时候在对象之间的直接相互作用(通信)非常困难(不可达,成本高昂,过于复杂),就可以在这些对象中间增加一辅助对象(第三方的,可以是自然存在的,也可以是人为增加的)来达到通信目的,这种方法就是间接法,间接法中的第三方我们称之为中间角色,需要注意的是这个中间角色可以是对象,也可以是"场地".间接法的场景和处理方法在现实世界中无处不在,货币,集市,代理人,银行等.而且这种间接法具有多重性和相对性,多重性是指中间角色可以是横向的多个,也可以是纵向的多个;相对性是指中间角色是相对的,比如A->B->C中,B是中间角色,但在B->C->D中B则是通信方角色.当然,在实际系统设计中,应尽量避免多角色问题,做到对象责任尽量单一.
间接法不仅让对象之间的作用成为可能(比如电话使得两个距离很远的人可以通话),还可以提供很大的灵活性并降低成本(超市,集市等).在软件设计模式中的大多数创建型和行为型基本都属于间接法范畴,而结构型中很多也是这种方法的体现.间接法告诉我们,如果:
A) 如果一个事情直接处理比较困难(对象间通信);
B)如果一个对象处理能力有限(责任过多);(从方法学来说,这种更倾向于辅助法)
C)为了更加灵活和可扩展
......
我们都可以试着增加一些中间角色来辅助处理.需要注意的是如果从角色分解的角度来看,有些中间角色并不处在"中间",这也没有关系.
1)让作用成为可能(解决根本问题);
2)提供了灵活性和可扩展性;

在现实处理中,采用间接法时,设定中间角色相对比较简单,但如何处理原来对象与中间对象的责任关系呢?方法就是责任重新分配,原则就是责任单一.责任单一是一种化繁为简的方法.下面我们来看看软件设计模式中的间接法应用:对于创建模型设计模式,其目的是为了减少消费者对象(对象使用者)的创建责任,同时将创建责任集中起来以获得一定的控制功能,便于创建责任的增加和扩展.利用间接法,增加一个中间角色-对象工厂,专门负责产品对象的创建.在这种模式里将相互作用的对象分为三种角色:产品,工厂和消费者.这种模式跟我们现实社会中绝大部分的产品生产和消费的处理方式是一致的.
对于代理,观察者,命令等模式,都是间接法的典型应用.需要注意的是这些模式并不是软件设计专用的,这些方法都是在现实生产和生活中总结出来的.

PS:写这种文章感觉很耗脑子.

分享到:
评论

相关推荐

    UML和模式应用(架构师必备).part06.rar

    26.2 一些GRASP原则是对其他设计模式的归纳 26.3 设计中发现的“分析”:领域模型 26.4 工厂(Factory) 26.5 单实例类(GoF) 26.6 具有不同接口的外部服务问题的结论 26.7 策略(GoF) 26.8 组合(GoF)和...

    UML和模式应用(架构师必备).part02.rar

    26.2 一些GRASP原则是对其他设计模式的归纳 26.3 设计中发现的“分析”:领域模型 26.4 工厂(Factory) 26.5 单实例类(GoF) 26.6 具有不同接口的外部服务问题的结论 26.7 策略(GoF) 26.8 组合(GoF)和...

    编程新手真言......

    8.3 OO,模板,设计模式与设计 171 8.4 设计能力和程序员能力模型 172 8.4 自上而下设计和自下而上设计 173 8.5 大中型软件和复用与逻辑达成 177 8.6 通用设计与专门设计 178 8.7 具象与抽象 178 8.7 架构与应用 179 ...

    UML和模式应用(架构师必备).part01.rar

    26.2 一些GRASP原则是对其他设计模式的归纳 26.3 设计中发现的“分析”:领域模型 26.4 工厂(Factory) 26.5 单实例类(GoF) 26.6 具有不同接口的外部服务问题的结论 26.7 策略(GoF) 26.8 组合(GoF)和...

    UML和模式应用(架构师必备).part07.rar

    26.2 一些GRASP原则是对其他设计模式的归纳 26.3 设计中发现的“分析”:领域模型 26.4 工厂(Factory) 26.5 单实例类(GoF) 26.6 具有不同接口的外部服务问题的结论 26.7 策略(GoF) 26.8 组合(GoF)和...

    UML和模式应用(架构师必备).part03.rar

    26.2 一些GRASP原则是对其他设计模式的归纳 26.3 设计中发现的“分析”:领域模型 26.4 工厂(Factory) 26.5 单实例类(GoF) 26.6 具有不同接口的外部服务问题的结论 26.7 策略(GoF) 26.8 组合(GoF)和...

    UML和模式应用(架构师必备).part04.rar

    26.2 一些GRASP原则是对其他设计模式的归纳 26.3 设计中发现的“分析”:领域模型 26.4 工厂(Factory) 26.5 单实例类(GoF) 26.6 具有不同接口的外部服务问题的结论 26.7 策略(GoF) 26.8 组合(GoF)和...

    UML和模式应用(架构师必备).part08.rar

    26.2 一些GRASP原则是对其他设计模式的归纳 26.3 设计中发现的“分析”:领域模型 26.4 工厂(Factory) 26.5 单实例类(GoF) 26.6 具有不同接口的外部服务问题的结论 26.7 策略(GoF) 26.8 组合(GoF)和...

    UML和模式应用(架构师必备).part05.rar

    26.2 一些GRASP原则是对其他设计模式的归纳 26.3 设计中发现的“分析”:领域模型 26.4 工厂(Factory) 26.5 单实例类(GoF) 26.6 具有不同接口的外部服务问题的结论 26.7 策略(GoF) 26.8 组合(GoF)和...

    二级C语言公共基础知识

    (9) 数据库系统的三级模式分别为______模式、内部级模式与外部级模式。 答:概念#概念级 (10) 数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。 答:数据存储 ...

    计算机二级C语言考试题预测

    (10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是(A) 注:P108 A. 内模式 B. 外模式 C. 概念模式 D. 逻辑模式 (11) 算法的时间复杂度是指(C) A. 执行算法程序所需要的时间 B. 算法程序的长度 C. 算法...

    面向对象与UML资料

    第一章 结构化的分析与设计 8 第一节 模型图 8 业务流程图 8 数据流图 11 功能结构图 12 功能树 13 网络结构图 14 程序流程图 15 第二节 需求分析 15 需求分析的任务 15 需求分析的步骤 15 需求分析的原则 16 需求...

    连锁经营数据库设计.doc

    " " " "学 号: " " 课 程 设 计 "题 目 "连锁经营数据库设计 " "学 院 "计算机科学与技术 " "专 业 " " "班 级 " " "姓 名 " " "指导教师 "唐祖楷 " "2013 "年"1 "月"9 "日 " 课程设计任务书 学生姓名: 专业班级:...

    实例解读51单片机完全学习与应用

    4.5.3 软件设计 第2篇 揭 密 单片机的内部结构是怎样的?单片机开发经常会用到哪些电子技术和元器件知识?还有那困扰了很多人的单片机编程语言……本篇将生动地通过诸多实例带出单片机的基础知识,在遇到相关模拟...

    java源码包2

    一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源...

    代码之美(中文完整版).pdf

    本书既不是一本关于设计模式的书,也不是一本关于软件工程的书,它告诉你的不仅仅是一些正确的方式或者错误的方式。它让你站在那些优秀软件设计师的肩膀上,从他们的角度来看待问题。 本书给出了38位大师级程序员在...

    使用dsPIC30F实现交流感应电机的矢量控制

    • 软件采用间接磁通控制法实现交流感应电机的矢量 控制。 • 当控制环周期为50µs时,软件需要大约9MIPS的 CPU 开销 (不到全部CPU能力的1/3)。 • 应用程序需要258字节的数据存储空间以及256字 节的常量存储空间...

    基于AT89S52 单片的频率计

    外,还增强了对更多的32 位微处理器的支持,可以使嵌入式软件设计在软处理 器, FPGA 内部嵌入的硬处理器, 分立处理器之间无缝的迁移。使用了 Wishbone 开放总线连接器允许在FPGA 上实现的逻辑模块可以透明的连接到...

    会计理论考试题

    19.系统软件与应用软件的相互关系是 __D___ 。 A、前者以后者为基础 B、每一类都以另一类为基础 C、每一类都不以另一类为基础 D、后者以前者为基础 20.计算机辅助设计软件主要用于___B___。 A、文字处理 B、制图和...

Global site tag (gtag.js) - Google Analytics