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

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

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

 

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值