国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Jive論壇與Spring框架

2019-11-18 11:22:09
字體:
來源:轉載
供稿:網友

沒有一種新技術是憑空誕生的,它的萌芽或胚胎總是或多或少顯現于以前的技術中,Jive論壇是大家潛心研究的設計型應用程序,其相關解析可見本欄的GoF設計模式專欄。

  Jive和SPRing同為由javaBeans組成的J2EE Web系統,Jive作為早期成功設計案例,其主要架構成為大多數純JavaBeans系統的流行架構,Spring也不例外。

  Spring框架除了是一種Web層應用框架,還提供了訪問EJB層的接口,也有JDBC/ORM的直接操作。Spring框架主要魅力是使用IoC模式和AOP實現了Jive系統的通用功能,從而使得Jive這樣的純JavaBeans架構設計可以重用在其它系統中。

  假如你感慨于Jive的設計理念,但是又苦于無法重用其設計時,Spring框架已經幫你實現了。

  同時也要注重到:Spring框架類似“雜燴”,它包含了很多J2EE應用的工具,類如對EJB的調用,它的MVC與Struts JSF也是相競爭的,以純Ioc和AOP設計來說,Spring框架也是一種很重的(Heavy、Weight)框架。Spring框架是復雜的,假如想以Spring替代EJB,那么無疑按了葫蘆浮起瓢。

  將Jive論壇和Spring框架聯系起來,會幫助更多理解設計模式的程序員迅速把握最新的設計思潮,而不是一種跳躍式的強迫接受。假如你對Jive有很好的研究,將會發現Spring框架是Jive設計的更加通用的提升。

  在Jive中,ForumFactory是整個系統的入口和突破點,Jive通過ForumFactory將整個系統掌控在一個工廠模式下,這樣做的好處是:便于控制系統的JavaBeans,例如,客戶端通過ForumFactory可創建一個Forum或訪問一個Forum,但是是否有權限訪問呢?如下圖:


  
   Jive通過ForumFactory將這種訪問引導到相應的Proxy類去,如ForumFactoryProxy類等,通過代理模式對這些類進行權限控制訪問。這是代理模式的一個主要用處,但是研讀Jive的代理模式會發現,要為每個類實現一個Proxy類,非常瑣碎,有沒有更優雅的方式呢? 當然使用動態代理。

  Spring框架基本是抽象上述設計,Spring框架對所有JavaBeans的治理也是基于一個總入口Bean Factory機制,不同的是,BeanFactory可以 治理所有應用的JavaBeans,使用者只要將自己的JavaBeans通過配置文件告訴BeanFactory,那么BeanFactory將會加載這些JavaBeans,例如:

  <beans>
    <bean id="exampleBean" class="eg.ExampleBean"/>
    <bean id="anotherExample" class="eg.ExampleBeanTwo"/>
  </beans>

  在Jive中,ForumFactory加載Jive自己的JavaBeans是通過工廠實現DbForumFactory實現的,如下代碼,DbForumFactory引發了后臺一系列功能實現,這是縱向,而return new ForumFactoryProxy這個語句則類似引來一個切面,從一個橫向方面實現了權限訪問等功能:

private static String className = "com.jivesoftware.forum.database.DbForumFactory";

public static ForumFactory getInstance(Authorization authorization) {
     //If no valid authorization passed in, return null.
     if (authorization == null) {
       return null;
     }
     //以下使用了Singleton 單態模式
     if (factory == null) {
       synchronized(initLock) {
         if (factory == null) {
             ......

          try {
               //動態轉載類
               Class c = Class.forName(className);
               factory = (ForumFactory)c.newInstance();
           }
           catch (Exception e) {
               return null;
           }
         }
       }
     }

     //Now, 返回 proxy.用來限制授權對forum的訪問
     return new ForumFactoryProxy(authorization, factory,                     factory.getPermissions(authorization));
   }

  既然Spring框架也是通過一個Bean Factory加載所有的類,那么它是如何加載的?通過IoC模式,也就是依靠性注射模式。在我以前文章“IoC模式”中,我比較了Factory工廠模式創建對象和Ioc模式的注射對象實現之間的異同,Ioc相比工廠模式則更加解耦了調用者和被調用者之間關系,使用Ioc模式,無需在調用者代碼中涉及被調用者的具體實現。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 柯坪县| 瑞安市| 上虞市| 河东区| 沁阳市| 苍山县| 公安县| 富民县| 石屏县| 建宁县| 怀安县| 柞水县| 通河县| 建湖县| 台北县| 诸暨市| 兖州市| 商城县| 延长县| 抚宁县| 分宜县| 安义县| 崇信县| 青田县| 自治县| 阳朔县| 江孜县| 衡阳县| 清镇市| 桑植县| 阿尔山市| 本溪市| 图木舒克市| 从江县| 富锦市| 南充市| 古蔺县| 绥江县| 渝北区| 鸡西市| 紫阳县|