::Z::Thinking::

::Simple::
文章 - 124,收藏 - , 评论 - 49, trackbacks - 0

前面有一个没有说清楚,但是非常重要的是:

究竟那些类是本系统的?那些类是外系统要用来组装的?

public class A(){

  B b=null;

  public A(B b){this.b=b;}

  public List service(){

         b.doService(); //ask b to do real service.

  }

}

==========

A是本系统的,B是外系统用来组装的。 micro container来负责组装,A在本系统中被n个其他类所引用。

public class C{

  ....

 A serviceA=(A)picoContainer.getRegisterdComponentByType(A.class);

 serviceA.service();

  ....

}

这样自己的代码中不会出现B任何东西。出现只能是A或者A实现的接口。B的组装由容器负责。

======================================

到底我们得到了什么?

1,我们想用B代码,然后发现自己代码很多都引用了B的类,突然一天,B类改名字了,傻了。

2,改用接口,对B说,你们写的代码都用这个标准接口。然后代码里面方法都可以标准化用公用接口名了,但是类的import,还有类的初始化都用B的类名。

3,改进!是用Service Locator来改进。所有代码里面有个统一的Service Locator来提供服务。所有的人都找service Locator要他帮自己干活。而locator呢,实现n多方法,把外部组件的服务通过adoptor来包装成自己的服务。

4,一切OK!其实这里已经可以解决问题了,所有外部系统提供的服务都通过service locator来代理提供。

5,。。。其实我也不太懂。。。:(



Trackback: http://tb.donews.net/TrackBack.aspx?PostId=467203


[点击此处收藏本文]  发表于2005年07月15日 4:21 PM




正在读取评论……