笨笨熊.java

          笨笨熊的JAVA學(xué)習(xí)筆記

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            5 Posts :: 0 Stories :: 32 Comments :: 0 Trackbacks

          IoC-(Inversion of Control)

          控制返轉(zhuǎn),在傳統(tǒng)的實(shí)現(xiàn)中,由程序內(nèi)部代碼來控制程序之間的關(guān)系。而在IoC中,將控制程序間關(guān)系的實(shí)現(xiàn)交給了外部的容器來完成。


          DI-(Dependency Injection)

          依賴注射,通常在程序中,我們會(huì)使用new關(guān)鍵字來實(shí)現(xiàn)兩組鍵間關(guān)系的組合,這種實(shí)現(xiàn)的方式會(huì)造成組件之間耦合(一個(gè)好的設(shè)計(jì),不但要實(shí)現(xiàn)代碼重用,還要將組件間關(guān)系解耦)。依賴注射很好的解決了該問題,它將實(shí)現(xiàn)組件間關(guān)系從程序內(nèi)部提到外部容器來管理。也就是說由容器在運(yùn)行期將組件間的某種依賴關(guān)系動(dòng)態(tài)的注入組件中。


          Model-View-Controller

          model:代表應(yīng)用的業(yè)務(wù)邏輯,用JavaBean和EJB實(shí)現(xiàn)。

                    在Struts中是用Action和ActionForm實(shí)現(xiàn)的。

          view:代表應(yīng)用的表示層。用JSP頁面實(shí)現(xiàn)。

          controller:提供應(yīng)用的處理過程控制。一般是一個(gè)servelet。

                        在Struts中用Action Servlet和ActionMapping實(shí)現(xiàn)。

          DTO: Data Transfer Object

          DTO就是數(shù)據(jù)傳輸對(duì)象(Data Transfer Object)的縮寫。
          DTO模式或稱VO模式,是指將數(shù)據(jù)封裝成普通的JavaBeans,在J2EE多個(gè)層次之間傳輸。
          DTO類似信使,是同步系統(tǒng)中的Message。
          該JavaBeans可以是一個(gè)數(shù)據(jù)模型Model。
          常見的方式就是為實(shí)體對(duì)象建立一個(gè)Model類,該類只包含這個(gè)對(duì)象所有字段的getter和setter。例如用戶User實(shí)體有name, password字段,則建立一個(gè)UserModel類,public方法有g(shù)etName,setName,getPassword,setPassword。這樣就可以把UserForm作為參數(shù)傳給其他函數(shù)。
          Data Transfer Object(DTO)模式是為了解決這樣的問題:例如我們的一個(gè)實(shí)體Bean,其對(duì)應(yīng)的數(shù)據(jù)庫表的字段非常多,那么我們?cè)谄銱ome接口的create方法中以及Enterprise Bean類的ejbCreate方法中的參數(shù)可能就會(huì)很多,導(dǎo)致我們的這些方法不夠elegant。我們可以通過定義一個(gè)簡(jiǎn)單的Java類(實(shí)現(xiàn)Serializable接口),其中定義一些屬性,并提供相應(yīng)的get和set方法來解決上面的問題。
          Model 、 Domain Object以及DTO關(guān)系:
          1. 分析提煉Model是系統(tǒng)設(shè)計(jì)之起端
          2. 系統(tǒng)設(shè)計(jì)之初,三者基本統(tǒng)一
          3. 系統(tǒng)復(fù)雜化后,DTO可能是多個(gè)Model組合實(shí)現(xiàn);

          GoF:(Gang of Four)---四人組

          Design Patterns: Elements of Reusable Object-Oriented Software(即后述《設(shè)計(jì)模式》一書),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著(Addison-Wesley,1995)。這幾位作者常被稱為“四人組(Gang of Four)”,而這本書也就被稱為“四人組(或 GoF)”書。

          在《設(shè)計(jì)模式》這本書的最大部分是一個(gè)目錄,該目錄列舉并描述了 23 種設(shè)計(jì)模式。另外,近來這一清單又增加了一些類別,最重要的是使涵蓋范圍擴(kuò)展到更具體的問題類型。例如,Mark Grand 在 Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UML(即后述《模式 Java 版》一書)中增加了解決涉及諸如并發(fā)等問題的模式,而由 Deepak Alur、John Crupi 和 Dan Malks 合著的 Core J2EE Patterns: Best Practices and Design Strategies 一書中主要關(guān)注使用 Java 2 企業(yè)技術(shù)的多層應(yīng)用程序上的模式。

          對(duì)軟件設(shè)計(jì)模式的研究造就了一本可能是面向?qū)ο笤O(shè)計(jì)方面最有影響的書籍:《設(shè)計(jì)模式》。

          DAO
              DAO是Data Access Object數(shù)據(jù)訪問接口,數(shù)據(jù)訪問:故名思義就是與數(shù)據(jù)庫打交道。夾在業(yè)務(wù)邏輯與數(shù)據(jù)庫資源中間。

              DAO的功能:

              1. DAO用來封裝Data Source的,就比如,Connection conn = DAOFacotry.createConnection()就可以把Driver,URL,username,passpword這一些放在DAO中。

              以后要更改數(shù)據(jù)庫的類型,比如要把MSSQL換成Oracle的話,只需要更改DAOFacory里面的getConnection()里面的Driver,URL,之類的。

              2. DAO也是把對(duì)數(shù)據(jù)庫的操作(比如最基本的CRUD操作)全部封裝在里面,比如說你要你要插入一個(gè)新的用戶,那么在DAO中我們只需要提供一個(gè)insertUser(User user)這一個(gè)方法就可以了。具體的操作是在DAO中實(shí)現(xiàn)的。

              那么對(duì)于要調(diào)用DAO的時(shí)候.我們只要知道insertUser(User)是用來插入一個(gè)新的用戶,而不需要知道是如何實(shí)現(xiàn)的。一般 DAO是與Abstract Factory模式一起來用的。

              Factory來建立數(shù)據(jù)庫和定位具體的DAO(比如說是UserDao、CustomerDao、),一般將getConnection設(shè)置為static,也可以把HibernateSessionFactory這一個(gè)公共類放在這一AbstractFactory類中去。

              public class DAOFactory
              {
              private static final
              SessionFactory sessionFacotory;
              // 定義一個(gè)TrheadLocal
              static Session currentSession()

              public UserDao getUserDAO()

              {
              return new UserDaoImpl(sesssion);
              }
              pulbic OtherDao getOtherDAO()

              {
              return new OtherDaoImpl(session);
              }
              ......
              }
              public interface UserDao
              {
              public insertUser(FormBean)

              public updateUser(FormBean);
              }
              然后就實(shí)現(xiàn)DAO的接口:

              (Struts的FormBean...VO來的..)

              public class UserDaoImpl
              implements UserDao
              {
              private Session session;
              public UserDaoImpl
              (Session session)

              {
              this.session = session;
              }...
              public insertUser(FormBean)

              {
              ..//..
              session.save(UserPO);
              ..//..
              return FormBean;
              }
              public FormBean
              updateUser(FormBean)

              {
              ..//..
              session.update(UserPO);
              ..//..
              return FormBean;
              }
              }
              最后定義你的PO:

              public class UserPO
              {
              String firstname,
              lastname, password..........
              }
              (T117)

          posted on 2005-09-24 22:37 笨笨熊 閱讀(325) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 罗江县| 库尔勒市| 余姚市| 五大连池市| 乐清市| 兰西县| 重庆市| 星座| 嘉定区| 闽侯县| 治县。| 廉江市| 宜章县| 郑州市| 红原县| 长葛市| 屏山县| 凭祥市| 静安区| 和顺县| 格尔木市| 射洪县| 济源市| 神池县| 文山县| 郑州市| 永年县| 沙坪坝区| 广安市| 尼勒克县| 万州区| 裕民县| 七台河市| 蓬溪县| 夏河县| 杭锦旗| 姜堰市| 邳州市| 罗源县| 苏州市| 苏尼特左旗|