由XX想到的.


谁来定义接口.
接口就是规则,职责在于描述外部表现,而非内部实现. 那么接口应该由谁来定义?
锅炉厂生产锅炉, 客户在使用过程当中,由于没有全身心的关注锅炉,导致了一些事故的发生. 客户提出了这个问题,要求锅炉上加上报警装置, 锅炉厂本身不生产

报警器的, A:锅炉厂就在锅炉上留下安装报警器的接口,然后找来生产报警器的工厂,让报警器厂按照留好的接口生产出合适的报警来.
这里锅炉厂相当于客户方,报警器厂相当于服务提供方, 接口的定义是由客户方制定,然后交由服务方实现.
B:锅炉厂到市场上去寻找比较满意的报警器,买回来后,按照报警器的说明规格(想要使用此报警器,必须具备什么什么),在锅炉上安装上报警器.
这里锅炉厂依然是客户方,报警器厂依然是服务提供方,但是接口的制定者变换了, 现再接口的定义是由服务方制定.

接口定义的时机.
预先定义接口,然后交由实现方实现.   这个很合适由客户方提出的规范,然后交由软件来实现规范需求.
已有实现的成品,从成品上制定规范.   这是应该是一流公司的追求吧.
SUN公司发布的个规范,然后由其它厂商实现.
当Spring,Hibernate大行其道时, EJB3的规范出来了,JPA的规范也出来了. (重构到接口吗?)

有效的作法:有经验,有预见性,能够首先制定出接口来,当变化真的来临,就可以抵抗住变化因素带来的影响或降低影响.
                  当没有经验的时候,我们预见不到未来变化的情况,我们只能从实际出发,然后等待第一次变化的来临,这次变化会给我们带来两方面.
                   一.它会摧残系统,需要你对系统修改,这往往是痛苦的事情. 二.实在应该感谢它,正是它的到来,你才有充分的理由去重构系统,使得它能抵抗住以后的 

                变化. 第二次变化的来临应该是检验成果的时候了.如果你的痛苦感明显比第一次变化来得轻,那么说明你是一个合格的.如果你的痛苦感比第一次更深

的话,那只能说明你是不合格的,此时如果你还意识不到的话,那以后的变化只会让你痛不欲生.

你可能感兴趣的:(spring,Hibernate,jpa,sun)