团队项目合作探索系列二 开发模式
程序员文章站
2022-06-06 12:08:14
...
团队项目合作探索系列二:开发模式
关于开发模式的文章实在太多了,多得让人越看越糊涂.到谷歌里随便一搜索,就能找出成千上万的文章.
那开发模式到底是什么,这样题目很难回答,因为他是抽象的,但是原理是明确的,我来讲个示例:
现在,我需要在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
上一篇: 技术服务于人, 而不是支配人.之我见解