用调用者与被调用者的角度看组件与设计模式   


  
      什么是组件,大家都会说是一个可以重用的可扩展的等一大堆特性的类的集合.() 而作为我们这些未出茅庐的学子如何去理解这些特性呢?其实理解设计模式与组件,看懂几个结构图并不难,而难的是为什么与怎么用.

以下是我对其的一些理解:

  从本质上讲,组件的存在意义是以其被调用者的身份出现的.而非调用者.也就是说组件大多用来解决普遍性的问题.比较一般的问题.说白了,就是组件的结构要相对客户代码(调用者)稳定.(就好像你去商场买东西,商场必须把东西摆在较固定的位置,而不能今天摆这里明天摆那里,而今天和明天有些货物是不同的,有时有货有时没货但不能因为没货就摆上完全不同种类的货物在原先的架子。那客户就难找了)

  而所谓的需求变化,就是有些变化会导致组件的变化,但我们又要保持组件的结构相对客户稳定(相对调用者稳定),但客户代码是调用组件的(也就是依赖组件)所以我们就在写组件时要引入抽象(接口)(也就是封装变化点)让客户代码(调用者)依赖抽象(接口就像合同,客户规定了组件应提供何种服务(调用接口),而不管你是如何提供服务的)。而让组件的变化不会影响到客户代码。而设计模式无非就是引入一个抽象再通过组合或继承的手段来达到设计合适组件的目的。

  但是我们在写代码的时候,往往会发现我们到头来还不是要new一个个具体对象,new一个新的对象不就依赖具体(重新编译客户代码)了吗?所以呢,那些高手就来了个动态加载,来个配置文件,什么Ioc(控制反转)等无非就是满足这方面的需求。也就是让你不用修改客户代码,而通过修改配置文件(就是组件的配置文件)让客户根据配置文件来选择行为。

所以,学东西死记不了,一定要弄明白一个概念的提出是用来解决什么问题的。(就好像我们赚钱是为了什么(我们都清楚),而不能只会赚钱不会花钱)然后再看他是怎么实现的,哪段代码变,哪段代码要稳定,从而保证结构稳定。通常是保持结构不变(而软件重构也就是让结构更加稳定),却可以扩展。也就是OCP(对扩展开放,对修改关闭)

所以,面向对象思想与设计模式的目的之就是找变化,哪里有变化,哪里就封而装之

posted on 2006-06-12 16:15 pear 阅读(916) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: