posts - 3,  comments - 12,  trackbacks - 0

           POJO(Plain Old Java Object)這種叫法是Martin Fowler、Rebecca Parsons和Josh MacKenzie在2000年的一次演講的時(shí)候提出來(lái)的。
                我在做J2EE培訓(xùn)中發(fā)現(xiàn)我的很多學(xué)生問(wèn)我什么是POJO,后來(lái)我在寫(xiě)書(shū)(《Spring2初學(xué)者實(shí)踐教材》和《Spring3初學(xué)者實(shí)踐教材》)的時(shí)候發(fā)現(xiàn)POJO這個(gè)概念無(wú)法回避。現(xiàn)在網(wǎng)上對(duì)于POJO的解釋很多,但是很多都是有錯(cuò)誤的或者不夠準(zhǔn)確。對(duì)此我一開(kāi)始也是存在誤區(qū)的,我原來(lái)是這樣理解的:
                  POJO是這樣的一種“純粹的”JavaBean,在它里面除了JavaBean規(guī)范的方法和屬性沒(méi)有別的東西,即private屬性以及對(duì)這個(gè)屬性方法的public的get和set方法。我們會(huì)發(fā)現(xiàn)這樣的JavaBean很“單純”,它只能裝載數(shù)據(jù),作為數(shù)據(jù)存儲(chǔ)的載體,而不具有業(yè)務(wù)邏輯處理的能力。
              所以下面的代碼被認(rèn)為是POJO了。

          package com.tongking.spring;


          public class DbHello implements Hello {

                 private DictionaryDAO dao;

                 public void setDao(DictionaryDAO dao) {

                        this.dao = dao;

                 }

          }

                  其實(shí),這樣的認(rèn)為是錯(cuò)誤的,我仔細(xì)閱讀了《POJOs in Action》這本書(shū)的有關(guān)部分和POJO的最原始的出處http://martinfowler.com/bliki/POJO.html,
                  The term was coined while Rebecca Parsons, Josh MacKenzie and I were preparing for a talk at a conference in September 2000. In the talk we were pointing out the many benefits of encoding business logic into regular java objects rather than using Entity Beans. We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it''s caught on very nicely.
          基本的意思是我們要給具有業(yè)務(wù)邏輯處理的規(guī)則的Java對(duì)象(regular java objects)起了一個(gè)名字——POJO,這些Java對(duì)象不是EntityBeans(EJB的一種)。


                  我又在http://www.webopedia.com/TERM/P/POJO.htm查到解釋如下:

          POJO, or Plain Old Java Object, is a normal Java object class (that is, not a JavaBean, EntityBean etc.)  and does not serve any other special role nor does it implement any special interfaces of any of the Java frameworks. This term was coined by Martin Fowler, Rebbecca Parsons and Josh MacKenzie who believed that by creating the acronym POJO, such objects would have a "fancy name", thereby convincing people that they were worthy of use.
                  基本意思是說(shuō)POJO一個(gè)正規(guī)的Java對(duì)象(不是JavaBean,EntityBean等),也不擔(dān)當(dāng)任何的特殊的角色,也不實(shí)現(xiàn)任何Java框架指定的接口。
                  我覺(jué)得上面的解釋很準(zhǔn)確,POJO應(yīng)該不是我們開(kāi)始認(rèn)為的JavaBean,當(dāng)然更不是EJB,它不應(yīng)該依賴(lài)于框架即繼承或?qū)崿F(xiàn)某些框架類(lèi)或接口。例如:Struts1中的Action和ActionForm當(dāng)然不屬于POJO了,而在Struts2中的Action由于可以不繼承任何的接口,所以在這種情況下Action是POJO,但是Struts2中的Action也可以繼承ActionSupport類(lèi)就不再屬于POJO了。POJO里面是可以包含業(yè)務(wù)邏輯處理和持久化邏輯,也可以包含類(lèi)似與JavaBean屬性和對(duì)屬性訪(fǎng)問(wèn)的set和get方法的。
                 最后,我們總結(jié)一下給一個(gè)定義把,POJO是一個(gè)簡(jiǎn)單的、正規(guī)Java對(duì)象,它包含業(yè)務(wù)邏輯處理或持久化邏輯等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不繼承或不實(shí)現(xiàn)任何其它Java框架的類(lèi)或接口。

          文章出處:飛諾網(wǎng)(www.firnow.com):http://dev.firnow.com/course/3_program/java/javashl/200845/108451.html

          posted on 2011-04-19 11:00 [ 王志偉 ] 閱讀(356) 評(píng)論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           

          <2011年4月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          常用鏈接

          留言簿(1)

          隨筆檔案(3)

          文章檔案(29)

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 海林市| 城固县| 化州市| 岑巩县| 武冈市| 曲阳县| 合肥市| 重庆市| 凤城市| 会同县| 东丽区| 神池县| 忻州市| 朔州市| 丰镇市| 齐河县| 郧西县| 龙陵县| 治多县| 太仓市| 朝阳县| 阿图什市| 清苑县| 临城县| 西充县| 渝北区| 青州市| 克什克腾旗| 齐齐哈尔市| 平阴县| 道真| 乌兰浩特市| 南投县| 威宁| 休宁县| 广宁县| 潢川县| 富源县| 万山特区| 临沧市| 邯郸市|