`
janrn
  • 浏览: 44343 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

团队项目合作探索系列二 开发模式

阅读更多

团队项目合作探索系列二:开发模式

关于开发模式的文章实在太多了,多得让人越看越糊涂.到谷歌里随便一搜索,就能找出成千上万的文章.

那开发模式到底是什么,这样题目很难回答,因为他是抽象的,但是原理是明确的,我来讲个示例:

现在,我需要在A 类中引用B类,请问我们应该如何做呢,在C++与Java中有什么差别.

天啊,这么简单的问题,没错,确实很简单,一般我们的做法,如同C++一样,如图:

 

一般,我们的做法就是:
classB classb = new classB();
这也是C++的做法,也就是C++的模式,应该说C++没有模式之说.而我们做JAVA时通常的做法也是如此,直接NEW一个对象来进行调用.
但是,我们现在利用J2EE常用的开发模式思想来设计我们的日常开发.那么我们应该怎样做呢.
没错,我们不应该直接调NEW方法来创建classB对象,我们应该调classB的接口,如下图:在classA中通过calssB的接口来调用classB.


 
恭喜你,你已经开始有J2EE的开发模式有所掌握了.这种模式很常见,用得也是最广泛的,比如在我们的ssh框架中就大量存在.如我们的三层框架类就是这样的大量接口,servce通过接口调DAO.当然这个过程也不是完全符合.
但是JAVA众多模式所提的不仅仅就是这一点点.其模式据说已经成文的就多达25种之多.
我再将上面的模式变化一下,如下图所示:ClassA不直接操作创建ClassB,而是把这个创建ClassB的任务交给另一个对象ClassC.


 
大家一眼就看出来了,这就是经典的工厂模式,ClassC就是那个工厂或者说装配器.
但是这样做还不够,配合前面的模式,在ClassC与ClassB之间再加上ClassB的接口.变成如下所示:


 
这样看起来似乎不错,不过,我们应该在ClassA与ClassC之间也尝试分离开来.结果如下:


 
 
但是这样做,我们还是觉得有点不太舒服,因为在ClassA要ClassB时,我还是要明确的告诉ClassC帮我创建ClassB,而且ClassA还必需明确的知道ClassC,所以就产生了一种模式,叫做代理模式,ClassA不再通过IClassC接口调ClassC,再通过ClassC来创建ClassB这种方式,改成如下方式:


 
ClassA只管使用ClassB接口里的对象,而不用管是谁帮他创建了ClassB,而ClassC只管生产创建ClassB,而不用管是谁要这个对象.应该说,Spring框架就有点像这种模式,不过实际上并不一样.

好啦,基本上,J2EE的开发模式与这几种大同小异,而介绍出来的这几类也是使用最多最常见的也是最实用的,当然也是我现在掌握了解的几种,但是,作为日常开发而言,是足够的,但是,我们想进一步提高我们的技术,特别是做技术构架以及项目设计时,这些还远远不够,我们需要了解更多,更多.

归结一下:作为JAVA的开发设计模式,有很多,但是这么模式,归根到底,都是同样的原则,那就是让JAVA开发更加快捷,方便,稳健等.以及代码的高内聚和低耦合.每种模式都有各自的优点,我们在开发之中应该灵活采用相应的模式.

没有最好的模式,只有合适的模式,灵活合理的采用不同的模式,才能让你的开发更加有效~~~~~~~欢迎大家一起来讨论这种话题!

 

本文原文发表在我的个人博客上: http://www.busfly.net/post/teamwork-02-Modes-java-cpp.html 

  • 大小: 6.2 KB
  • 大小: 8 KB
  • 大小: 7.9 KB
  • 大小: 10.5 KB
  • 大小: 12.2 KB
  • 大小: 11.6 KB
3
1
分享到:
评论
3 楼 janrn 2008-11-11  
qwjcool 写道

名字有些误导...



都是个人想法,可能很多说法都有问题,欢迎指正
2 楼 jayjayjays 2008-11-11  
不错......
1 楼 qwjcool 2008-11-11  
名字有些误导...

相关推荐

Global site tag (gtag.js) - Google Analytics