﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-天若有情-文章分类-JAVA技术</title><link>http://www.blogjava.net/jzgl-ever/category/33294.html</link><description>到教堂忏悔，愿主安抚我罪恶的心灵......</description><language>zh-cn</language><lastBuildDate>Wed, 06 Aug 2008 18:22:36 GMT</lastBuildDate><pubDate>Wed, 06 Aug 2008 18:22:36 GMT</pubDate><ttl>60</ttl><item><title>接口回调（接口引用）及类的引用</title><link>http://www.blogjava.net/jzgl-ever/articles/220550.html</link><dc:creator>freedoom</dc:creator><author>freedoom</author><pubDate>Wed, 06 Aug 2008 17:49:00 GMT</pubDate><guid>http://www.blogjava.net/jzgl-ever/articles/220550.html</guid><description><![CDATA[&nbsp;
<table style="background: #f3f3f3; border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; width: 426.1pt; padding-top: 0cm" valign="top" width="568">
            <p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">package</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> dao;</span></p>
            <p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">class</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> <span style="background: silver">Father</span>{</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">void</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> method(){</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.</span><em><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">out</span></em><span style="font-size: 10pt; color: black; font-family: 'Courier New'">.println(</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"Father method called....."</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">);</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">}</span></p>
            <p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">class</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> Son </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">extends</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> <span style="background: silver">Father</span>{</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">void</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> method(){</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.</span><em><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">out</span></em><span style="font-size: 10pt; color: black; font-family: 'Courier New'">.println(</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"Son method called....."</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">);</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">}</span></p>
            <p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">class</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> TestAbstract{</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">static</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">void</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> main(String args[]){</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background: silver">Father</span> f;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Son son=</span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">new</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> Son();</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f=son;</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'">//&nbsp;&nbsp;&nbsp;&nbsp; Father f=new Son();</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f.method();</span></p>
            <p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
            <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">}</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p><span style="font-family: 宋体">为什么可以用</span><span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'">Father f=new Son();</span></p>
<p><span style="font-size: 10pt; color: #ff6600; font-family: 宋体">因为</span><span style="font-size: 10pt; color: #ff6600; font-family: 'Courier New'">Father</span><span style="font-size: 10pt; color: #ff6600; font-family: 宋体">的范围比</span><span style="font-size: 10pt; color: #ff6600; font-family: 'Courier New'">Son</span><span style="font-size: 10pt; color: #ff6600; font-family: 宋体">的范围大，编辑器会帮助我们将子类的类型的自动转换为父类的类型，</span><span style="font-size: 10pt; font-family: 宋体">这即是父类的引用，子类的对象，</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <p><span style="font-size: 10pt; color: #3f7f5f; font-family: 宋体">（</span><span style="font-size: 10pt; font-family: 宋体">注意：这里子类</span><span style="font-size: 10pt; font-family: 'Courier New'">Son</span><span style="font-size: 10pt; font-family: 宋体">已经重写了父类的</span><span style="font-size: 10pt; font-family: 'Courier New'">method()</span><span style="font-size: 10pt; font-family: 宋体">方法，所以当运行</span><span style="font-size: 10pt; font-family: 'Courier New'">f.method();</span><span style="font-size: 10pt; font-family: 宋体">时调用的是子类的方法，所以这里可以得出两点结论，即：</span></p>
            <p><span style="font-size: 10pt; font-family: 'Courier New'">Father f=new Son();</span><span style="font-size: 10pt; font-family: 宋体">运行时：</span></p>
            <p><span style="font-size: 10pt; font-family: 'Courier New'">1.</span><span style="font-size: 10pt; font-family: 宋体">）是父类的引用，子类的对象，实际运行时调用的是被子类重写的方法。</span></p>
            <p><span style="font-size: 10pt; font-family: 'Courier New'">2.</span><span style="font-size: 10pt; font-family: 宋体">）子类重写父类的方法，只能重写父类公共的、非静态的方法。</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">同理）</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p><span style="font-family: 宋体">以下是接口引用的问题：注意其中的区别。</span></p>
<p><span style="font-family: 宋体">接口引用</span></p>
<p style="background: #eeeeee; word-break: break-all; line-height: 150%; text-align: left" align="left"><span style="font-size: 9pt; color: blue; line-height: 150%; font-family: Verdana">static</span>&nbsp;<span style="font-size: 9pt; color: blue; line-height: 150%; font-family: Verdana">void</span><span style="font-size: 9pt; color: black; line-height: 150%; font-family: Verdana">&nbsp;Main(</span><span style="font-size: 9pt; color: blue; line-height: 150%; font-family: Verdana">string</span><span style="font-size: 9pt; color: black; line-height: 150%; font-family: Verdana">[]&nbsp;args)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;IBankAccount&nbsp;venusAccount&nbsp;=&nbsp;</span><span style="font-size: 9pt; color: blue; line-height: 150%; font-family: Verdana">new</span><span style="font-size: 9pt; color: black; line-height: 150%; font-family: Verdana">&nbsp;SaverAccount();<br />
&nbsp;&nbsp;&nbsp;&nbsp;IBankAccount&nbsp;jupiterAccount&nbsp;=&nbsp;</span><span style="font-size: 9pt; color: blue; line-height: 150%; font-family: Verdana">new</span><span style="font-size: 9pt; color: black; line-height: 150%; font-family: Verdana">&nbsp;CurrentAccount();<br />
&nbsp;&nbsp;&nbsp;&nbsp;venusAccount.PayIn(200);<br />
&nbsp;&nbsp;&nbsp;&nbsp;jupiterAccount.PayIn(500);<br />
&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(venusAccount.ToString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;jupiterAccount.PayIn(400);<br />
&nbsp;&nbsp;&nbsp;&nbsp;jupiterAccount.Withdraw(500);<br />
&nbsp;&nbsp;&nbsp;&nbsp;jupiterAccount.Withdraw(100);<br />
&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(jupiterAccount.ToString());<br />
<br />
}</span></p>
<p><span style="font-size: 7pt; font-family: Verdana"><br />
</span><span style="font-size: 12pt"><span style="font-family: 宋体">　　<span style="font-size: 12pt">请注意开头两句，我们把它们声明为</span></span><span style="font-size: 12pt"><span style="font-family: Verdana">IBankAccount</span><span style="font-family: 宋体">（这是一个接口）引用的方式，而没有声明为类的引用，为什么呢？<strong><span style="color: #ff6600">因为，这样我们就可以让它指向执行这个接口的任何类的实例了，比较灵活。这也就是接口回调。</span></strong>但这也有个缺点，如果我们要执行不属于接口的方法，比如这里重载的</span><span style="font-family: Verdana">ToString()</span><span style="font-family: 宋体">方法，就要先把接口的引用强制转换成合适的类型了。</span></span></span></p>
<p><span style="font-family: 宋体"><span style="font-size: 12pt"><span style="font-size: 10pt">接口回调的例子：</span></span></span></p>
<p style="background: lightgrey; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">interface People{</span></p>
<p style="background: lightgrey; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp; void peopleList();</span></p>
<p style="background: lightgrey; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">}</span></p>
<p style="background: lightgrey; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">class Student implements People{</span></p>
<p style="background: lightgrey; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp; public void peopleList(){</span></p>
<p style="background: lightgrey; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; System.out.println("I&#8217;m a student.")</span><span style="font-size: 10pt; font-family: 宋体">；</span></p>
<p style="background: lightgrey; text-indent: 15.75pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">}</span></p>
<p style="background: lightgrey; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">}</span></p>
<p style="background: lightgrey; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">class Teacher implements People{</span></p>
<p style="background: lightgrey; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp; public void peopleList(){</span></p>
<p style="background: lightgrey; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; System.out.println("I&#8217;m a teacher.");</span></p>
<p style="background: lightgrey; text-indent: 10.5pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">}</span></p>
<p style="background: lightgrey; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">}</span></p>
<p style="background: lightgrey; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">public class Example{</span></p>
<p style="background: lightgrey; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp; public static void main(String args[]){</span></p>
<p style="background: lightgrey; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; People a;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-size: 10pt; font-family: 宋体">声明接口变量</span></p>
<p style="background: lightgrey; text-indent: 21pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">a=new Student();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-size: 10pt; font-family: 宋体">实例化，接口变量中存放对象的引用</span></p>
<p style="background: lightgrey; text-indent: 21pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">a.peopleList();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-size: 10pt; font-family: 宋体">接口回调</span></p>
<p style="background: lightgrey; text-indent: 21pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">a=new Teacher();&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-size: 10pt; font-family: 宋体">实例化，接口变量中存放对象的引用</span></p>
<p style="background: lightgrey; text-indent: 21pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">a.peopleList();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //</span><span style="font-size: 10pt; font-family: 宋体">接口回调</span></p>
<p style="background: lightgrey; text-indent: 10.5pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">}</span></p>
<p style="background: lightgrey; text-align: left" align="left"><span style="font-size: 10pt; font-family: 宋体">}</span></p>
<p style="line-height: 150%"><span style="font-size: 9pt; line-height: 150%; font-family: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><u><span style="font-size: 10pt; line-height: 150%; font-family: 宋体">结果：</span></u></p>
<p style="line-height: 150%; text-align: left" align="left"><span style="font-size: 9pt; line-height: 150%; font-family: 宋体">I&#8217;m a student.</span></p>
<p style="line-height: 150%; text-align: left" align="left"><span style="font-size: 9pt; line-height: 150%; font-family: 宋体">I&#8217;m a teacher</span></p>
<img src ="http://www.blogjava.net/jzgl-ever/aggbug/220550.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jzgl-ever/" target="_blank">freedoom</a> 2008-08-07 01:49 <a href="http://www.blogjava.net/jzgl-ever/articles/220550.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java中的工厂模式</title><link>http://www.blogjava.net/jzgl-ever/articles/217685.html</link><dc:creator>freedoom</dc:creator><author>freedoom</author><pubDate>Sat, 26 Jul 2008 11:08:00 GMT</pubDate><guid>http://www.blogjava.net/jzgl-ever/articles/217685.html</guid><wfw:comment>http://www.blogjava.net/jzgl-ever/comments/217685.html</wfw:comment><comments>http://www.blogjava.net/jzgl-ever/articles/217685.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jzgl-ever/comments/commentRss/217685.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jzgl-ever/services/trackbacks/217685.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 举两个例子以快速明白Java中的工厂模式：女娲抟土造人话说：&#8220;天地开辟，未有人民，女娲抟土为人。&#8221;女娲需要用土造出一个个的人，但在女娲造出人之前，人的概念只存在于女娲的思想里面。女娲造人，这就是简单工厂模式的应用。　　首先，在这个造人的思想里面，有几个重要的角色：女娲本身、抽象的人的概念和女娲所造出的一个个具体的人。　　1.）女娲是一个工厂类，也...&nbsp;&nbsp;<a href='http://www.blogjava.net/jzgl-ever/articles/217685.html'>阅读全文</a><img src ="http://www.blogjava.net/jzgl-ever/aggbug/217685.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jzgl-ever/" target="_blank">freedoom</a> 2008-07-26 19:08 <a href="http://www.blogjava.net/jzgl-ever/articles/217685.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java中的基本概念（PO，VO，POJO，DTO，DAO）</title><link>http://www.blogjava.net/jzgl-ever/articles/217600.html</link><dc:creator>freedoom</dc:creator><author>freedoom</author><pubDate>Fri, 25 Jul 2008 16:02:00 GMT</pubDate><guid>http://www.blogjava.net/jzgl-ever/articles/217600.html</guid><wfw:comment>http://www.blogjava.net/jzgl-ever/comments/217600.html</wfw:comment><comments>http://www.blogjava.net/jzgl-ever/articles/217600.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jzgl-ever/comments/commentRss/217600.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jzgl-ever/services/trackbacks/217600.html</trackback:ping><description><![CDATA[<span class="hilite2">PO</span>:persistant object持久对象,可以看成是与数据库中的表相映射的java对象。最简单的<span class="hilite2">PO</span>就是对应数据库中某个表中的一条记录，多个记录可以用<span class="hilite2">PO</span>的集合。<span class="hilite2">PO</span>中应该不包含任何对数据库的操作. <br />
VO:value object值对象。通常用于业务层之间的数据传递，和<span class="hilite2">PO</span>一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递. <br />
DAO:data access object数据访问对象，此对象用于访问数据库。通常和<span class="hilite2">PO</span>结合使用，DAO中包含了各种数据库的操作方法。通过它的方法,结合<span class="hilite2">PO</span>对数据库进行相关的操作. <br />
BO:business object业务对象,封装业务逻辑的java对象,通过调用DAO方法,结合<span class="hilite2">PO</span>,VO进行业务操作; <br />
<span class="hilite2">PO</span>JO:plain ordinary java object 简单无规则java对象,我个人觉得它和其他不是一个层面上的东西,VO和<span class="hilite2">PO</span>应该都属于它. <br />
<br />
<div title="Print Page Break" style="font-size: 1px; page-break-before: always; vertical-align: middle; width: 1024px; height: 52px; background-color: #c0c0c0">&nbsp; </div>
<br />
<span class="hilite2">PO</span>： <br />
persistant object持久对象 <br />
最形象的理解就是一个<span class="hilite2">PO</span>就是数据库中的一条记录。 <br />
好处是可以把一条记录作为一个对象处理，可以方便的转为其它对象。 <br />
BO： <br />
business object业务对象 <br />
主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。 <br />
比如一个简历，有教育经历、工作经历、社会 关系等等。 <br />
我们可以把教育经历对应一个<span class="hilite2">PO</span>，工作经历对应一个<span class="hilite2">PO</span>，社会 关系对应一个<span class="hilite2">PO</span>。 <br />
建立一个对应简历的BO对象处理简历，每个BO包含这些<span class="hilite2">PO</span>。 <br />
这样处理业务逻辑时，我们就可以针对BO去处理。 <br />
VO ： <br />
value object值对象 <br />
ViewObject表现层对象 <br />
主要对应界面显示的数据对象。对于一个WEB页面，或者SWT、SWING的一个界面，用一个VO对象对应整个界面的值。 <br />
DTO ： <br />
Data Transfer Object数据传输对象 <br />
主要用于远程调用等需要大量传输对象的地方。 <br />
比如我们一张表有100个字段，那么对应的<span class="hilite2">PO</span>就有100个属性。 <br />
但是我们界面上只要显示10个字段， <br />
客户端用WEB service来获取数据，没有必要把整个<span class="hilite2">PO</span>对象传递到客户端， <br />
这时我们就可以用只有这10个属性的DTO来传递结果到客户端，这样也不会暴露服务端表结构.到达客户端以后，如果用这个对象来对应界面显示，那此时它的身份就转为VO <br />
<span class="hilite2">PO</span>JO ： <br />
plain ordinary java object 简单java对象 <br />
个人感觉<span class="hilite2">PO</span>JO是最常见最多变的对象，是一个中间对象，也是我们最常打交道的对象。 <br />
一个<span class="hilite2">PO</span>JO持久化以后就是<span class="hilite2">PO</span> <br />
直接用它传递、传递过程中就是DTO <br />
直接用来对应表示层就是VO <br />
DAO： <br />
data access object数据访问对象 <br />
这个大家最熟悉，和上面几个O区别最大，基本没有互相转化的可能性和必要. <br />
主要用来封装对数据库的访问。通过它可以把<span class="hilite2">PO</span>JO持久化为<span class="hilite2">PO</span>，用<span class="hilite2">PO</span>组装出来VO、DTO 
 <img src ="http://www.blogjava.net/jzgl-ever/aggbug/217600.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jzgl-ever/" target="_blank">freedoom</a> 2008-07-26 00:02 <a href="http://www.blogjava.net/jzgl-ever/articles/217600.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>