日期:2014-05-20  浏览次数:20734 次

讨论一下java设计模式在实际的开发的作用
一直想学习设计模式,其实对那么多模式感觉挺迷惑的
都说高手一定要掌握设计模式
那设计模式在实际开发中到底有什么好处呢

------解决方案--------------------
呵呵,这个问题就和“用相机如何能照好相”一样经典,一直觉得设计模式应该是水到渠成的事情,如果写个hello world都要用到设计模式那就有点疯狂了。lz,别误会,我和你一样期待下面大牛们的答案:)
------解决方案--------------------
个人理解,如果只有10本书,桌子上随便放放也能找得到,如果有10000本,那就要分门别类放起来,不然找起来会吐血。
------解决方案--------------------
阅读代码时有好处,
讨论时有好处,

------解决方案--------------------
个人观点:
可以使开发更加简单,程序更加健壮,使代码更容易理解。当然还有很多的好处,楼下go on!
------解决方案--------------------
主要是为了代码的可重用性,可扩展性,可维护性~~~
------解决方案--------------------
通过项目体验吧!
------解决方案--------------------
设计模式就是抽象出来的东西,或许你用到了,却不知道而已.

抽象的模式总是指导者具体的架构,框架进行
------解决方案--------------------
具体到struts,spring,hibernate.作用也就很清楚了。

1.struts:
在 Struts 中,已經由一個名為 ActionServlet 的 Servlet 充當 控制器(Controller)的角色,根據描述模型、視圖、控制器對應關係的 struts-config.xml 的配置文件,轉發視圖(View)的請求,組裝響應數據模型(Model)。在 MVC 的 模型(Model)部分,經常劃分為兩個主要子系統(系統的內部數據狀態與改變數據狀態的邏輯動作),這兩個概念子系統分別具體對應 Struts 里的 ActionForm 與 Action 兩個需要繼承實現超類。在這裏,Struts 可以與各種標準的數據訪問技術結合在一起,包括Enterprise Java Beans(EJB), JDBC 與 JNDI。在 Struts 的視圖(View)端,除了使用標準的JavaServer Pages(JSP)以外,還提供了大量的標籤庫使用,同時也可以與其他表現層組件技術(產品)進行整合,比如 Velocity Templates,XSLT 等。通過應用 Struts 的框架,最終用戶可以把大部分的關注點放在自己的業務邏輯(Action)與 映射關係的配置文件(struts-config.xml)中


2.spring:
Spring 中包含的关键特性

强大的基于 JavaBeans 的采用控制翻转(Inversion of Control,IoC)原则的配置管理,使得应用程序的组建更加快捷简易。 
一个可用于从 applet 到 Java EE 等不同运行环境的核心 Bean 工厂。 
数据库事务的一般化抽象层,允许宣告式(Declarative)事务管理器,简化事务的划分使之与底层无关。 
内建的针对 JTA 和 单个 JDBC 数据源的一般化策略,使 Spring 的事务支持不要求 Java EE 环境,这与一般的 JTA 或者 EJB CMT 相反。 
JDBC 抽象层提供了有针对性的异常等级(不再从SQL异常中提取原始代码),简化了错误处理,大大减少了程序员的编码量。再次利用JDBC时,你无需再写出另一个 '终止' (finally) 模块。并且面向JDBC的异常与Spring 通用数据访问对象(Data Access Object)异常等级相一致。 
以资源容器,DAO 实现和事务策略等形式与 Hibernate,JDO 和 iBATIS SQL Maps 集成。利用众多的翻转控制方便特性来全面支持,解决了许多典型的Hibernate集成问题。所有这些全部遵从Spring通用事务处理和通用数据访问对象异常等级规范。 
灵活的基于核心 Spring 功能的 MVC 网页应用程序框架。开发者通过策略接口将拥有对该框架的高度控制,因而该框架将适应于多种呈现(View)技术,例如 JSP,FreeMarker,Velocity,Tiles,iText 以及 POI。值得注意的是,Spring 中间层可以轻易地结合于任何基于 MVC 框架的网页层,例如 Struts,WebWork,或 Tapestry。 
提供诸如事务管理等服务的面向方面编程框架。 
在设计应用程序Model时,MVC 模式(例如Struts)通常难于给出一个简洁明了的框架结构。Spring却具有能够让这部分工作变得简单的能力。程序开发员们可以使用Spring的 JDBC 抽象层重新设计那些复杂的框架结构。

3.hibernate:
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
------解决方案--------------------
很简单.你代码写多了自然就感觉到了
------解决方案--------------------
同意Sunny的说法。使用设计模式是一种感觉,没有可以使用某个模式在里面。这就如同练武,最高境界是无招胜有招。为什么说会设计模式的人是牛人,因为他们已经到了视而不见模式的程度,一切模式都是自然而然流露出来的。
我现在就有这样的感觉。凡是我没有刻意去采用的模式,往往都是良好的设计,反而哪些可以采用的模式,往往都不甚恰当。
最后送一句某高人跟我说的话:学模式不可定式!