﻿<?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>IT博客-For things to change, first I must change! </title><link>http://www.cnitblog.com/jc213/</link><description>路漫漫其修远兮，吾将上下而求索！</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 06:00:42 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 06:00:42 GMT</pubDate><ttl>60</ttl><item><title>职场最忌讳4种跳槽方式</title><link>http://www.cnitblog.com/jc213/archive/2009/02/06/54303.html</link><dc:creator>winter_IT</dc:creator><author>winter_IT</author><pubDate>Fri, 06 Feb 2009 03:31:00 GMT</pubDate><guid>http://www.cnitblog.com/jc213/archive/2009/02/06/54303.html</guid><description><![CDATA[<p>一、随意改行，盲目跟潮。每一次换行都必须从新手做起，知识和经验难以积累，也很难成为行业的佼佼者。如果到了四十岁还没有在某个行业里开拓出一片天地，那么跳槽就业将会变得比较艰难。 </p>
<p>二、不加分析，盲目听信。通过跳槽能让薪资上个台阶固然是好，可是为了一两百块跳槽就显得过于草率。现在很多中介或公司在招聘的时候说得很好，求职者如果不加分析，就会轻易入瓮。有的人在跳槽时只盯住薪资，不考虑自身的长远发展，更是得不偿失。盲目听信者往往会迅速再次跳槽，进入恶性循环。企业认为这样的求职者做事草率，难堪大用。 </p>
<p>三、意气用事，盲目跳槽。有些人仅仅因为一点小事与上司或同事意见不和，便&#8220;一纸休书&#8221;，&#8220;挂印而去&#8221;。这样的人情商一般高不到哪儿去，更缺乏沟通能力和团队精神，换了环境也难有作为，反易成为老单位同事的笑柄。企业一般也不愿招聘。 </p>
<p>四、急于求成，盲进忙出。几乎每个人都希望在工作中能迅速得到晋升。有志向是好的，但是急于求成就不行了。急于求成者往往&#8220;欲速则不达&#8221;。一位曾在金贸大厦工作过的人事告诉笔者，金贸大厦最后晋升到高层管理位置的并非当初能力最强者，而是能坚持留到最后的人。经验和能力都需要日积月累。来到新的环境，光是获得领导和周围同事认同就不是一天两天的事，晋升机会的获得更需要耐心。 </p>
<p>因此，现代成功学认为成功更多的取决于情商和逆境商，而非传统意义上的智商了。要把潜力转化为能力，实力转化为地位，切忌急于求成，频繁跳槽，况且好企业一般都比较看重员工的忠诚度，频繁跳槽乃大忌也.。</p>
<img src ="http://www.cnitblog.com/jc213/aggbug/54303.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/jc213/" target="_blank">winter_IT</a> 2009-02-06 11:31 <a href="http://www.cnitblog.com/jc213/archive/2009/02/06/54303.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>1分钟自我介绍</title><link>http://www.cnitblog.com/jc213/archive/2009/02/06/54299.html</link><dc:creator>winter_IT</dc:creator><author>winter_IT</author><pubDate>Fri, 06 Feb 2009 02:17:00 GMT</pubDate><guid>http://www.cnitblog.com/jc213/archive/2009/02/06/54299.html</guid><description><![CDATA[<p>一分钟的自我介绍，犹如商品广告，在短短六十秒内，针对&#8220;客户&#8221;的需要，将自己最美好的一面，毫无保留地表现出来，不但要令对方留下深刻的印象，还要即时引发起&#8220;购买欲&#8221;。 </p>
<p>自我认识首先必须知道你能带给公司什么好处。当然不能空口讲白话，必须有事实加以证明。 </p>
<p>最理想就是能够&#8220;展示&#8221;过去的成就。例如你曾为以往的公司设计网页，并得过奖项或赞扬。但当然，这些例子都必须与现在公司的业务性质有关。 </p>
<p>职位愈高，自我认识就愈重要，应将个人的成败得失，尽录在日记中。这样，就可以时刻都清楚自己的弱点与强项。投其所好 清楚自己的强项后，便可以开始预备自我介绍的内容：包括工作模式、优点、技能，突出成就、专业知识、学术背景等。 </p>
<p>好处众多，但只有短短一分钟，所以一切还是与该公司有关的好。如果是一间电脑软件公司，应说些电脑软件的话题：如是一间金融财务公司，便可跟他说钱的事，总之投其所好。 </p>
<p>但有一点必须紧记：话题所到之处。必须突出自己对该公司作出的贡献，如增加营业额、减低成本、发掘新市场等。铺排次序 内容的次序亦极重要，是否能紧握听众的注意力，全在于事件的编排方式。所以排在头位的，应是你最想他记得的事情。而这些事情，一般都是你最得意之作。与此同时，可呈上一些有关的作品或纪录增加印象分。 </p>
<p>身体语言 不管内容如何精彩绝伦，若没有美丽的包装，还是不成的。所以在自我介绍当中，必须留意自己在各方面的表现，尤其是声线。切忌以背诵朗读的口吻介绍自己。最好事前找些朋友作练习对象，尽量令声线听来流畅自然，充满自信。 </p>
<p>身体语言也是重要的一环，尤其是眼神接触。这不但令听众的专心，也可表现自信。曾有一项报告指出，日常的沟通，非语言性的占了70%。所以，若想面试成功，便应紧记注意一下你的身体语言。 </p>
<img src ="http://www.cnitblog.com/jc213/aggbug/54299.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/jc213/" target="_blank">winter_IT</a> 2009-02-06 10:17 <a href="http://www.cnitblog.com/jc213/archive/2009/02/06/54299.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>选择比努力更重要！</title><link>http://www.cnitblog.com/jc213/archive/2009/02/05/54276.html</link><dc:creator>winter_IT</dc:creator><author>winter_IT</author><pubDate>Thu, 05 Feb 2009 03:31:00 GMT</pubDate><guid>http://www.cnitblog.com/jc213/archive/2009/02/05/54276.html</guid><wfw:comment>http://www.cnitblog.com/jc213/comments/54276.html</wfw:comment><comments>http://www.cnitblog.com/jc213/archive/2009/02/05/54276.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/jc213/comments/commentRss/54276.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/jc213/services/trackbacks/54276.html</trackback:ping><description><![CDATA[<p>努力就能成功？爱拼才会赢？ </p>
<p>一位中国留学生，向他西方的同学讲述在中国几乎家喻户晓的&#8220;愚公移山&#8221;的故事。他的同学听完，暗自摇头，疑惑地问道：&#8220;宁愿花那么大的精力去移走房前的大山，为什么不换一个没有山挡路的地方重建一座房子呢？显然后者比前者成本低啊！？&#8221; </p>
<p>我们再来看一看苍蝇撞击玻璃窗的情形------苍蝇，用其短小生命的全部力量，不停地撞击玻璃窗，不停地撞------它顽固的相信，现在的努力和方法就可以穿破玻璃飞出去，实现梦想，达成目标。它几乎是用牺牲生命作为努力的代价，但这并不能改变它不可能穿过玻璃窗的事实。最终，它坠落在玻璃窗下------然而，一米之外，大门是敞开的，苍蝇可能只需要用它撞击玻璃窗十分之一甚至百分之一的努力，就可以达成目标-------- </p>
<p>两则故事带给我们的是同样一个启示：努力不会使你成功的。努力是一个陷阱，如果方向错误的话。选择比努力更重要！今天，在与我们父辈不一样的这个年代，我们再也不缺乏资讯、资源、机会，而是太多。多得我们看不过来；多得我们记不进去；多得让我们应接不暇；多得令我们无从下手；多得相互矛盾让我们产生疑惑；多得彼此影响让我们难以决策----- 谁说学习就可以改变命运？要学对才行。爱拼就会赢？拼对了才可能。无论是个人或企业，你必须针对你的实际情况，进行准确的选择。这是一个考察我们是否具备选择智慧的时代了！ </p>
<p>会电脑的朋友都知道，必须定期清理硬盘，以释放空间——选择舍弃，才有可能获得！ </p>
<p>选择要面临比较，选择要面临权衡，选择要有能力鉴别； </p>
<p>选择要面临决定；选择要面临取舍，选择要有能力放弃； </p>
<p>选择是一种能力，选择更是一种智慧！选择来源于生命的积淀；选择是自信与胸怀的体现。 </p>
<p>首先做对的事，而后把事情做对！做正确的事远比把事情做正确更重要。 </p>
<p>人的一生只有三天：昨天、今天、明天。你的今天是由你昨天的选择决定的；你的明天将取决于你今天的选择。努力工作只是成功的前提，正确选择才是成功的关键——选择比努力更重要！ </p>
<img src ="http://www.cnitblog.com/jc213/aggbug/54276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/jc213/" target="_blank">winter_IT</a> 2009-02-05 11:31 <a href="http://www.cnitblog.com/jc213/archive/2009/02/05/54276.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用科学方法规划职业生涯</title><link>http://www.cnitblog.com/jc213/archive/2009/02/05/54273.html</link><dc:creator>winter_IT</dc:creator><author>winter_IT</author><pubDate>Thu, 05 Feb 2009 03:28:00 GMT</pubDate><guid>http://www.cnitblog.com/jc213/archive/2009/02/05/54273.html</guid><wfw:comment>http://www.cnitblog.com/jc213/comments/54273.html</wfw:comment><comments>http://www.cnitblog.com/jc213/archive/2009/02/05/54273.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/jc213/comments/commentRss/54273.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/jc213/services/trackbacks/54273.html</trackback:ping><description><![CDATA[梦想不等于理想，幻想不等于规划，真正的职业生涯规划，是需要用科学的方法来制定的。<br>
<p>1、<strong>设立榜样。</strong>中国有句古话：榜样的力量是无穷的。在我们的学生时代，我们被张海迪这一类现实生活中的榜样感动，也受到了诸如《平凡的世界》中主人翁的影响。进入职场之后，比尔盖茨的故事又是妇孺皆知。他们就是时代的楷模，他们就是可以效仿的榜样。所以，在我们的大学时代，我们不妨给自己找一个榜样，学习他的成功经历，分析他的优势和缺点，不断的学习和超越。 </p>
<p>昨天看了《鲁豫有约》，题目是80后的财富故事，我的感受很深，人真的是可以有梦想的，人的真的是应该找到榜样的，有梦想，去实现；有榜样，去效仿。 </p>
<p>2、<strong>目标管理：</strong>我们经常听说一个故事，就是一位著名的日本马拉松长跑运动员，取得非常不错的成绩，当我们问他成功有什么秘诀的时候，他告诉我们，他把路程分成很多个阶段，然后一个目标一个目标的去实现，所以那么长的路，对他来说也就不算什么了。目标管理，这个概念是现代企业的一个重要理念，包括目标制定、目标分解、执行与反馈，效果评估等几个阶段。在目标管理的过程中也要注意几点： </p>
<p>（1）、目标要有挑战性，很容易实现的目标是不会激起斗志的。 </p>
<p>（2）、清楚实现目标的必要条件，去创造条件，达成目标。 </p>
<p>（3）、将目标分成若干个小目标，不断的突破自己。 </p>
<p>（4）、根据客观情况对目标进行调整。 </p>
<p>3、<strong>80/20法则：</strong>看到这个方法，很多同学会比较疑惑，其实这是一个我们在平时如何安排自己的时间的一个方法。 </p>
<p>80/20法则是19世纪意大利经济学家维尔弗雷多`帕雷托发现的，简单地说，就是：20%的少数决定80%的多数。举例：20%的人掌握了全球80%的财富；20%的企业生产了80%的产品。说简单贴切于我们的就业：20%的毕业生，80%的企业抢着要；20%的时间，能够创造80%的效益。常见的经济现象存在&#8220;关键的少数和次要的多数的比率约为二比八&#8221;这个规律。在任何特定的群体中，重要的因子通常只是少数，而不重要的因子则占多数，因此只要能够控制具有重要性的少数因子就能控制全局。 </p>
<p>这告诉我们一个简单的道理：抓住要点，抓住关键。在最有效的时间，做最重要的事情。 </p>
<p>（1）、分清事情的轻重缓急，不要一把抓，什么事情是最重要的，什么是次要的，不要颠倒的去对待。当然这个认识是需要一段时间的摸索的，我们只有不断的提高自己分辨的能力，才可能真正帮助自己更好的合理分配自己的时间。 </p>
<p>（2）、提高工作的效率，合理的管理自己的时间的。列出你的计划表，提高你的执行力。 </p>
<p>（3）、学会对一些事情说&#8220;no！&#8221;。我们的同学在很多时候，不太会拒绝，这个拒绝是个很大的概念，不单是拒绝一些朋友的要求，还包括自己的一些不太好的习惯。 </p>
<p>用科学的方法去规划你的职业生涯，说起来容易，做起来不容易。知道了不等于做了，做了不等于习惯了，习惯了，形成你的思维模式了，你才真正学会了。 </p>
<img src ="http://www.cnitblog.com/jc213/aggbug/54273.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/jc213/" target="_blank">winter_IT</a> 2009-02-05 11:28 <a href="http://www.cnitblog.com/jc213/archive/2009/02/05/54273.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>与上司沟通的 8 个黄金句型</title><link>http://www.cnitblog.com/jc213/archive/2009/02/05/54271.html</link><dc:creator>winter_IT</dc:creator><author>winter_IT</author><pubDate>Thu, 05 Feb 2009 03:06:00 GMT</pubDate><guid>http://www.cnitblog.com/jc213/archive/2009/02/05/54271.html</guid><wfw:comment>http://www.cnitblog.com/jc213/comments/54271.html</wfw:comment><comments>http://www.cnitblog.com/jc213/archive/2009/02/05/54271.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/jc213/comments/commentRss/54271.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/jc213/services/trackbacks/54271.html</trackback:ping><description><![CDATA[<p><strong>句型1 ：我们似乎碰到一些状况</strong> 　　 </p>
<p>妙处：以最婉约的方式传递坏消息。 </p>
<p>如果立刻冲到上司的办公室里报告这个坏消息，就算不干你的事，也只会让上司质疑你处理危机的能力。此时，你应该不带情绪起伏的声调，从容不迫地说出本句型，要让上司觉得事情并非无法解决，而我们听起来像是你将与上司站在同一阵线，并肩作战。 　　 </p>
<p><strong>句型2 ：我马上处理。</strong> 　　 </p>
<p>妙处：上司传唤时责无旁贷 　　 </p>
<p>冷静，迅速地做出这样的回答，会令上司直觉地认为你是名有效率的好部属；相反，犹豫不决的态度只会惹得责任本就繁重的上司不快。 　　 </p>
<p><strong>句型3 ：安琪的主意真不错。</strong> 　　 </p>
<p>妙处：表现出团队精神 </p>
<p>安琪想出了一条连上司都赞赏的绝妙好计，你恨不得你的脑筋动得比人家快；与其拉长脸孔，暗自不爽，不如偷沾他的光，会让上司觉得你富有团队精神，因而另眼看待。 　　 </p>
<p><strong>句型4 ：这个报告没有你不行啦！</strong> 　　 </p>
<p>妙处：说服同事帮忙 　　 </p>
<p>有件棘手的工作，你无法独立完成，怎么开口才能让那个以这方面工作最拿手的同事心甘情愿地助你一臂之力呢？送高帽，灌迷汤，而那些好心人为了不负自己在这方面的名声，通常会答应你的请求。 　　 </p>
<p><strong>句型5 ：让我再认真地想一想，3点以前给你答复好吗？</strong> </p>
<p>妙处：巧妙闪避你不知道的事 </p>
<p>上司问了你某个与业务有关的问题，而你不知该如何作答，千万不可以说不知道。本句型不仅暂时为你解危，也让上司认为你在这件事情上头很用心。不过，事后可得做足功课，按时交出你的答复。 　　 </p>
<p><strong>句型6 ：我很想知道你对某件事情的看法</strong> </p>
<p>妙外：恰如其分的讨好 　　 </p>
<p>你与高层要人共处一室，这是一个让你能够赢得青睐的绝佳时机。但说些什么好呢？此时，最恰当的莫过一个跟公司前景有关，而又发人深省的话题。在他滔滔不绝地诉说心得的时候，你不仅获益良多，也会让他对你的求知上进之心刮目相看。 </p>
<p><strong>句型7 ：是我一时失察，不过幸好&#8230;&#8230;</strong> 　　 </p>
<p>妙处：承认疏失但不引起上司不满 </p>
<p>犯错在所难免，勇于承认自己的过失非常重要，不过这不表示你就得因此对每个人道歉，诀窍在于别让所有的矛头都指到自己身上，坦诚却谈化你的过失，转移众人的焦点。 　　 </p>
<p><strong>句型8 ：谢谢你告诉我，我会仔细考虑你的建议</strong> </p>
<p>妙处：面对批评表现冷静 </p>
<p>自己的工作成果遭人修正或批评，的确是一件令人苦恼的事。不需要将不满的情绪写出在脸上，不卑不亢的表现令你看起来更有自信，更值得人敬重。 </p>
<img src ="http://www.cnitblog.com/jc213/aggbug/54271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/jc213/" target="_blank">winter_IT</a> 2009-02-05 11:06 <a href="http://www.cnitblog.com/jc213/archive/2009/02/05/54271.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]伯伯2008年终总结[ 旅游 | 电影 | 文章 | C# | Javascript | CSS ]</title><link>http://www.cnitblog.com/jc213/archive/2009/02/05/54268.html</link><dc:creator>winter_IT</dc:creator><author>winter_IT</author><pubDate>Thu, 05 Feb 2009 02:01:00 GMT</pubDate><guid>http://www.cnitblog.com/jc213/archive/2009/02/05/54268.html</guid><wfw:comment>http://www.cnitblog.com/jc213/comments/54268.html</wfw:comment><comments>http://www.cnitblog.com/jc213/archive/2009/02/05/54268.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/jc213/comments/commentRss/54268.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/jc213/services/trackbacks/54268.html</trackback:ping><description><![CDATA[摘要: 前言瞅见别人写年终总结我也心痒痒了，想想今年还是收获不少的，下面和大家分享一下吧: )---------------------------------------------------------------------------------------------人物农民伯伯老实说我是农村里长大的，到岳阳市的时候就觉得自己很土、很农民，现在到了北京就更加觉得了，尤其是步入高楼大厦时候的感觉&nbsp;&nbsp;<a href='http://www.cnblogs.com/over140/archive/2008/12/29/1364693.html'>阅读全文</a><img src ="http://www.cnblogs.com/over140/aggbug/1364693.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/44667/" target="_blank">为何微软该发布Linux版IE?</a><br/>导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://job.cnblogs.com/" target="_blank">招聘</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a><br>文章来源:<a href='http://www.cnblogs.com/over140/archive/2008/12/29/1364693.html'>http://www.cnblogs.com/over140/archive/2008/12/29/1364693.html</a><img src ="http://www.cnitblog.com/jc213/aggbug/54268.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/jc213/" target="_blank">winter_IT</a> 2009-02-05 10:01 <a href="http://www.cnitblog.com/jc213/archive/2009/02/05/54268.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]伯伯菜园系列 之 “接口”白菜</title><link>http://www.cnitblog.com/jc213/archive/2009/02/05/54267.html</link><dc:creator>winter_IT</dc:creator><author>winter_IT</author><pubDate>Thu, 05 Feb 2009 01:40:00 GMT</pubDate><guid>http://www.cnitblog.com/jc213/archive/2009/02/05/54267.html</guid><wfw:comment>http://www.cnitblog.com/jc213/comments/54267.html</wfw:comment><comments>http://www.cnitblog.com/jc213/archive/2009/02/05/54267.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/jc213/comments/commentRss/54267.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/jc213/services/trackbacks/54267.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p><strong style="FONT-SIZE: 14pt">前言</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;相信大家对接口是不陌生的，但是你真的理解什么是接口吗？真的能用好吗？我们口口声声说按接口编程，到底如何接口编程呢？接口编程的意义在哪呢？...对于接口的迷茫，经常在三层结构里面看到的，千篇一律的把每一个Dao都写一个接口，每个<font face=Verdana>Service再写一个接口，因为他们看的例子就是这样的，网上很多例子都是这样的，这就叫按接口编程了？！心里没底，到下次自己写项目自己设计的时候再加上赶进度怕是没这么勤奋的复制粘贴了，原因还是没有明白接口到底有什么用！甚着感觉接口这玩意就像脱裤子放屁——多此一举！真的是这样么？那么，接下来我和大家一起来探讨关于接口的种种...</font></p>
<p>&nbsp;</p>
<p><strong style="FONT-SIZE: 14pt">正文</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>一、什么是接口、接口有什么用</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我们先看看别人是怎么说接口的，我收集总结了一下，仅列出以下五种说法：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接口的意义在于顶替多重继承。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接口的作用，一言以蔽之，就是标志类的类别（type of class）。把不同类型的类归于不同的接口，可以更好的管理他们。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接口简单理解就是一种约定，使得实现接口的类或结构在形式上保持一致，使用接口可以使程序更加清晰和条理化。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接口就是定义了一个合同，实现这个接口的类都保证自己符合这个合同要求。 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接口从更深层次的理解，应是定义(规范，约束)与实现(名实分离的原则)的分离。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里我就不评价这几种说法了，下面说说我理解的接口是什么样子的。这里拿电脑里的主板来讲，主板上有<span lang=EN-US>USB</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">总线接口</span>、基本外设接口（用来连接键盘、鼠标、打印机等传统外设）、驱动器接口（用来连接硬盘驱动器、光盘驱动器和软盘驱动器等）...很眼熟吧！！这些东西都是带接口两字的，我们称之为硬件接口或接口类型，在翻阅关于这些硬件借口资料的时候你经常会发现这些接口都是由许多有名的公司如Microsoft、IBM、Intel、Apple等公司共同约定、开发的一种标准！！例如：USB是Compaq、DEC、IBM、Intel、Microsoft、NEC(日本)、Nothern Telecom(加拿大)等7家公司与1994年11月联合开发的计算机串行接口总线标准；IEEE 1394是1986年由Apple公司和TI(德克萨克仪器)公司开发的高速串行接口标准，命名为&#8220;火线&#8221;(Fire Wire)等。那么为什么要制定这些标准呢？包括现在都在争的3G标准，更有专门的标准组织和标准委员会。全世界硬件厂商多不胜数，随便列几个：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPU:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Intel、AMD</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;内存:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;金士顿、黑金刚、<font face=Verdana>宇瞻</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;硬盘:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;日立、希捷</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;显示器:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;飞利浦、三星、LG、明基、优派等，这么多厂商，这么多品牌，我们没有因为把飞利浦的显示器换成三星的电脑就不能用了，任意换硬盘、换内存，加显卡，接不同牌子的鼠标，用不同牌子的键盘，为什么没有问题？关键就在这里了——他们都遵循了标准，这些硬件都是按标准生产出来的！！所以我们用盗版的硬件(如 鼠标)也可以很爽，因为盗版他也遵循了标准！！可以说没有这些硬件标准——个人电脑也不能像今天如此普及！！现在我们再回过头来看接口，请告诉我你有什么感觉？我的感觉就是接口就是标准，或者称之为标准接口！！在硬件里面是，软件里面也是同样如此。好处是显而易见的，下面我们将上面的硬件接口&#8220;转换&#8221;成下面的软件接口的代码：</p>
<div class=cnblogs_code><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="COLOR: #0000ff">&nbsp;&nbsp;&nbsp; #region</span><span style="COLOR: #000000">&nbsp;CPU接口</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;CPU接口&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;针脚式&nbsp;:&nbsp;CPU接口&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;卡式&nbsp;:&nbsp;CPU接口&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;触点式&nbsp;:&nbsp;CPU接口&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;针脚式&nbsp;:&nbsp;CPU接口&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;Socket478&nbsp;:&nbsp;针脚式&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;Socket754&nbsp;:&nbsp;针脚式&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;Socket940&nbsp;:&nbsp;针脚式&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000">&nbsp;内存接口</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;内存接口&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;I144Pin&nbsp;:&nbsp;内存接口&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;I168Pin&nbsp;:&nbsp;内存接口&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;I240Pin&nbsp;:&nbsp;内存接口&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000">&nbsp;硬盘接口</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;硬盘接口&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;IDE&nbsp;:&nbsp;硬盘接口&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;SCSI&nbsp;:&nbsp;硬盘接口&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;SATA&nbsp;:&nbsp;硬盘接口&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;精英A780GM<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;构造一块主板<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;/summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="cpu"&gt;</span><span style="COLOR: #008000">Socket&nbsp;AM2/AM2+</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="hd"&gt;</span><span style="COLOR: #008000">SATA接口</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="ddr"&gt;</span><span style="COLOR: #008000">DDR2</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #808080"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;精英A780GM(Socket940&nbsp;cpu,&nbsp;SATA&nbsp;hd,&nbsp;I240Pin&nbsp;ddr)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这款<strong>精英A78GM</strong>主板是我随便从中关村在线里面找的一块板子，而上面的接口就是许多厂商坐在一起约定出来的标准接口，当然这里只是例举了主板的部分组件，但是可以看到，主板厂商都是按标准来进行制造的，他们生产不担心你插什么样的牌子CPU、硬盘、内存到主板上，只要你符合这个标准接口就行！！需要说明的是，上面五种对于接口的说法都是有一定道理的，而这里，我认为接口可以是标准，接口的意义更大体现在制定标准上面！！</p>
<p>&nbsp;</p>
<p><strong>二、如何使用标准</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;标准接口</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在上面的例子中，制定标准体现出良好的兼容性，有效降低了组合成本，更促进厂商按照标准专注本身等，下面我们再从软件编程中找更加贴切的例子来说明这一点。在跨数据库或数据库切换的时候我们可以用标准的接口来约束和规范数据库操作，以达到无缝切换（实际中可能有部分需要特殊处理）和跨数据库应用。下面给出一段无缝切换数据库的例子：</p>
<div class=cnblogs_code>
<p><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="COLOR: #0000ff">&nbsp;&nbsp;&nbsp; public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;IDAL<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;根据主键删除数据<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;/summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="pk"&gt;</span><span style="COLOR: #008000">主键</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #808080"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Delete(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;pk);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;SqlDAL&nbsp;:&nbsp;IDAL<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000">&nbsp;IDAL&nbsp;成员</span><span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Delete(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;pk)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlHelper.ExecuteNonQuery(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.Concat(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">DELETE&nbsp;TABLE&nbsp;[TEST]&nbsp;WHERE&nbsp;ID&nbsp;=&nbsp;</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,&nbsp;pk));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;OracleDAL&nbsp;:&nbsp;IDAL<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000">&nbsp;IDAL&nbsp;成员</span><span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Delete(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;pk)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OracleHelper.ExecuteNonQuery(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.Concat(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">DELETE&nbsp;TABLE&nbsp;[TEST]&nbsp;WHERE&nbsp;ID&nbsp;=&nbsp;</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,&nbsp;pk));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;MySqlDAL&nbsp;:&nbsp;IDAL<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000">&nbsp;IDAL&nbsp;成员</span><span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Delete(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;pk)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MySqlHelper.ExecuteNonQuery(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.Concat(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">DELETE&nbsp;TABLE&nbsp;[TEST]&nbsp;WHERE&nbsp;ID&nbsp;=&nbsp;</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,&nbsp;pk));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Business<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000">&nbsp;变量</span><span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;Type&nbsp;dalType;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;IDAL&nbsp;dal;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000">&nbsp;构造函数</span><span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Business()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dal&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Activator.CreateInstance(dalType)&nbsp;</span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000">&nbsp;IDAL;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;Business()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span></p>
<p><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//web.config:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font face=Verdana>&lt;add key="DatabaseType" value="sqlserver" /&gt;</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;DatabaseType&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;ConfigurationManager.AppSettings[</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">DatabaseType</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">!</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.IsNullOrEmpty(DatabaseType))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000">&nbsp;(DatabaseType.ToLower())<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">sqlserver</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dalType&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">(SqlDAL);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">mysql</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dalType&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">(MySqlDAL);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">oracle</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dalType&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">(OracleDAL);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">default</span><span style="COLOR: #000000">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dalType&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">(SqlDAL);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dalType&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">(SqlDAL);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;删除一笔数据<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;/summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="id"&gt;&lt;/param&gt;</span><span style="COLOR: #808080"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Remove(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;id)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dal.Delete(id);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}</span></p>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注意：这段代码不考虑SQL语句安全、效率等问题，关键是体现接口的作用。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;说明：好处是显而易见的，可维护性高，这段业务代码在切换数据库时是不需要更改任何代码的，只需轻松的把web.config的<font face=Verdana>DatabaseType指定为其他的数据库类型就行了。这得益于SqlDAL、MySqlDAL、OracleDAL都是按标准的方式来实现的数据库操作的。</font><font face=Verdana>便于分工，我们可以把这三个类分别交给三个人精通各自数据库的人来编写，这样同时也将业务层和数据层解耦了，只要标准一出，数据层和业务层的员工就可以同时开始编写代码，业务层员工只管按标准调用，而数据层员工只管按标准来编写。</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;参数传递</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对于接口的用途我最早是在java里面用于参数传递的，Java和C#都是强类型语言，也就是你传一个参数过来的时候需要明确指定一个类型。但是有一个类型非常特别，那就是如果我将参数的类型指定为object的时候，你不管传什么参数都可以，因为所有类型都继承自object！而将接口用于参数传递实现方式同object是一样的，只要你继承了你就可以被传输，所以大家经常能看到空的接口。接下来也会贴Java下使用Hibernate的一个例子&nbsp;，也是我第一次认识到接口作用的例子：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DaoBase.java</p>
<div class=cnblogs_code><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;DaoBase&nbsp;</span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000">&nbsp;HibernateDaoSupport&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">boolean</span><span style="COLOR: #000000">&nbsp;add(IModel&nbsp;model)&nbsp;</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;MyException&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.getHibernateTemplate().save(model);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">&nbsp;(Exception&nbsp;e)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;MyException(e);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">boolean</span><span style="COLOR: #000000">&nbsp;modified(IModel&nbsp;model)</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;MyException&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.getHibernateTemplate().update(model);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">&nbsp;(Exception&nbsp;e)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;MyException(e);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IModel.java</p>
<div class=cnblogs_code><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;IModel&nbsp;</span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000">&nbsp;java.io.Serializable&nbsp;{<br><br>}</span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font face=Verdana>Account</font>.java</p>
<div class=cnblogs_code><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Account&nbsp;</span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000">&nbsp;IModel&nbsp;{<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Fields&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;Integer&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;password;<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Constructors</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000">&nbsp;default&nbsp;constructor&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Account()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Property&nbsp;accessors</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Integer&nbsp;getId()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.id;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setId(Integer&nbsp;id)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.id&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;id;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;getPassword()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.password;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setPassword(String&nbsp;password)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.password&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;password;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}</span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;说明：<font face=Verdana>DaoBase</font>中<font face=Verdana>HibernateDaoSupport</font>在这里就不介绍了，主要是<font face=Verdana>this.getHibernateTemplate()</font>的两个方法<font face=Verdana>save</font>和<font face=Verdana>update，这两个方法的所需参数均是Object，以前的做法就是每一个表写一个Dao，每个Dao里面写一个add方法，然后参数为特定Model或者说是VO，极其繁琐，经过这样改装后就可以有一个通用的Dao了，也减少了许多代码量，而且比起直接用Object参数更加安全，因为它帮助<font face=Verdana>save</font>和<font face=Verdana>update</font>明确指定了只有继承了这个接口的VO才能传递进来！</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;身份</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在我的一篇文章中曾今探讨过这种用法：<a class=postTitle2 id=homepage1_HomePageDays_DaysList_ctl06_DayItem_DayList_ctl00_TitleUrl href="http://www.cnblogs.com/over140/archive/2008/12/27/1363491.html">IHttpHandler中使用Session实现原理[ASP.NET | IHttpHandler |IRequiresSessionState]</a>，为什么叫这种用法叫身份呢，主要是便于解说，&nbsp;以下示例取材于&#8220;广东公务员考试黑幕事件&#8221;：</p>
<div class=cnblogs_code><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="COLOR: #0000ff">&nbsp;&nbsp;&nbsp; public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;公务员考生身份&nbsp;{&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;打过招呼的<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;/summary&gt;</span><span style="COLOR: #808080"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;备注&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;警院万安中副院长&nbsp;:&nbsp;备注&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;中警院人事处咸逢清处长亲戚&nbsp;:&nbsp;备注&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;编办吴青川副处长&nbsp;:&nbsp;备注&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;司法厅吕恩处长转&nbsp;:&nbsp;备注&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;徐晓霞转省委办公厅信息处熊&nbsp;:&nbsp;备注&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;王小平转陈育生亲戚&nbsp;:&nbsp;备注&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;张新达委员转省财厅_办公厅等有关部门&nbsp;:&nbsp;备注&nbsp;{&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;阳春监狱警察梁志忠儿子&nbsp;:&nbsp;备注&nbsp;{&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">enum</span><span style="COLOR: #000000">&nbsp;考试结果<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;没考上&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">0</span><span style="COLOR: #000000">,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;普通狱警,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;狱警组长,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;狱警大队长,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;狱警副主任,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其他职位<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;政府机关<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;考试<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;/summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="ks"&gt;</span><span style="COLOR: #008000">必须已经报考了公务员考试</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #808080"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;考试(公务员考生身份&nbsp;ks)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"><img alt="" src="http://www.cnblogs.com/Images/dot.gif"><img alt="" src="http://www.cnblogs.com/Images/dot.gif">.</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;考试结果&nbsp;审核(公务员考生身份&nbsp;ks)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">有&#8220;备注&#8221;的61个考生，一个没落，全部录取进入体检阶段。</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(ks&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;备注)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(ks&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;警院万安中副院长)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;考试结果.普通狱警;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(ks&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;中警院人事处咸逢清处长亲戚)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;考试结果.普通狱警;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(ks&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;编办吴青川副处长)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;考试结果.普通狱警;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(ks&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;司法厅吕恩处长转)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;考试结果.狱警组长;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(ks&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;张新达委员转省财厅_办公厅等有关部门)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;考试结果.狱警副主任;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(ks&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;徐晓霞转省委办公厅信息处熊)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;考试结果.狱警大队长;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(ks&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;王小平转陈育生亲戚)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;考试结果.普通狱警;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(ks&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;阳春监狱警察梁志忠儿子)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;考试结果.普通狱警;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"><img alt="" src="http://www.cnblogs.com/Images/dot.gif">.</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;考试结果.其他职位;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">正常程序审理</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;(考试结果)(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Random().Next(</span><span style="COLOR: #800080">2</span><span style="COLOR: #000000">));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为了体现取材的严谨性，给出两个链接:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a).<font face=Verdana>http://hi.baidu.com/pol1ce/blog/item/046e7adacf6ea8deb7fd4831.html</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b).<font face=Verdana>http://news.xinhuanet.com/local/2008-06/03/content_8303411.htm</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;说明：从上面例子可以看出，同样是具有考生身份的人，当他具有别的身份的时候比如备注过的身份，程序执行结果是不一样的，对于考生结果是横不等于没考上的！！is的作用很大，他能辨别得出来具有什么样身份的人，今年公务员考试你备注了吗？如果没有！赶紧继承吧O(&#8745;_&#8745;)O哈哈~</p>
<p>&nbsp;</p>
<p><strong style="FONT-SIZE: 14pt">结束</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;写的时候苦于找不到合适的例子来说服自己，一直努力的阐述关于接口的所见所闻和所想，希望能带给你多一份关于接口的收获，热烈欢迎交流心得！！</p>
<img height=1 src="http://www.cnblogs.com/over140/aggbug/1383493.html?type=1" width=1><br><br>--------------------------<br>新闻：<a href="http://news.cnblogs.com/n/44673/" target=_blank>雅虎推搜索簿产品 模仿Google抛弃的Notebook</a><br>导航：<a href="http://www.cnblogs.com/" target=_blank>博客园首页</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com/" target=_blank>知识库</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com/" target=_blank>新闻</a>&nbsp;&nbsp;<a href="http://job.cnblogs.com/" target=_blank>招聘</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/" target=_blank>社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/group.htm" target=_blank>小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q" target=_blank>博问</a>&nbsp;&nbsp;<a href="http://wz.cnblogs.com/" target=_blank>网摘</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com/" target=_blank>找找看</a><br>文章来源:<a href="http://www.cnblogs.com/over140/archive/2009/02/05/1383493.html">http://www.cnblogs.com/over140/archive/2009/02/05/1383493.html</a> 
<img src ="http://www.cnitblog.com/jc213/aggbug/54267.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/jc213/" target="_blank">winter_IT</a> 2009-02-05 09:40 <a href="http://www.cnitblog.com/jc213/archive/2009/02/05/54267.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]项目那点儿事(五) ---胜负在此一举[需求分析]之斗智斗勇</title><link>http://www.cnitblog.com/jc213/archive/2009/02/04/54238.html</link><dc:creator>winter_IT</dc:creator><author>winter_IT</author><pubDate>Wed, 04 Feb 2009 08:25:00 GMT</pubDate><guid>http://www.cnitblog.com/jc213/archive/2009/02/04/54238.html</guid><wfw:comment>http://www.cnitblog.com/jc213/comments/54238.html</wfw:comment><comments>http://www.cnitblog.com/jc213/archive/2009/02/04/54238.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/jc213/comments/commentRss/54238.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/jc213/services/trackbacks/54238.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 按说需求调研好了，应该由乙方整理后提交《需求规格说明书》。那甲方这时候干什么呢？我找了很多资料，没有发现对这时甲方的工作要求。换言之就是甲方这时没事干。甲方没事干对我来说是件非常可怕的事，比我那闲置的五万丘八还可怕。丘八闲置只是浪费一点钱，不会出事，客户闲下来是要闹事的。</p>
<p>&nbsp;&nbsp;&nbsp; &#8220;温饱思X欲&#8221;，这可是圣人言啊。当然了客户不可能对我那个啥的（IT项目好像也没有这种潜规则），但是他无聊时，就会想很多，他想得多了，就会给你找活干。你看看你们公司给你安排工作的人都是不做实际事的，天天就是想着让你干啥活，今天出个考核表，明天搞个测评，后天让你写程序员日记。自己人都这样，何况是当爷爷的客户呢。找你干活没商量。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 所以我的做法就是我工作时，客户也不能闲着。所以我会安排很多事给他们做，比如流程图的确认工作、所有报表EXCEL化并写清每列的计算方法、功能列表的确认。总之我会把整个《需求规格说明书》拆成几个部分来确认，像报表这个部分基本就是让客户做的。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 不过一开始客户不太高兴呢，毕竟傻子都知道花报表这个是挺大的工作量，反正我说了如果我做了报表你们再看再修改那时间肯定不够用了，而且报表大部分是给领导看的，如果不合领导心意肯定不好，再说你做的报表，让领导知道，会对你大加表扬的。客户权衡利弊后，决得还是自己做划算一些。从此这个项目中的报表都是客户做的，大概120多张吧。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 现在客户有事忙了。我要开始做《需求规格说明书》了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 所说《需求规格说明书》，就是包含项目目标、背景、功能列表、用例的文档。现在我们要做的就是从客户一大堆的流程和描述中，分别找出功能来。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 有个简单的办法，把客户描述中的名词都标出来，每个名词就是一个对象，而名词所做的动作就是方法。将具有同类的对象设计为一个功能。看功能列表和用例数都出来了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 好了要写用例了，说到用例我要罗索一点了。</p>
<p>&nbsp;&nbsp;&nbsp; 春秋时有个叫孙子的人，当然了本名不叫孙子，叫孙武，后来的人尊敬他就叫他孙子了（原来古代是这样尊敬人的，汗啊）。在他的一本书里说&#8220;知已知彼，百战不贻（dai 同带，不是台啊，我认识位仁兄就读错了）&#8221;。所说知己，就是说，了解自己的实力。我们做项目自己这边的斤两还是清楚的。那知彼就难了，要了解对方的体重了，怎么了解啊，在项目里当然不能用体重秤了，好在这个世界上聪明人很多，有几位大侠就发明了一种工具，专门来了解客户的需求，这几位大侠是......（都是老外，也不用多了解，反正会用工具就行了，如果有想了解的同志，可以去找UML发展史看一下。）。这种工具就是UML，准确的讲，是UML当中的用例部分。</p>
<p>&nbsp;&nbsp;&nbsp; 用例是一个工具，估计大多数人都用过，可是你知道这个工具除了能描述需求外还能完善需求吗？我最喜欢的就是用例能完善需求的功能。</p>
<p>&nbsp;&nbsp;&nbsp; 用例怎么做，我就不说了，回去找一本《UML模型与设计》看一下就知道。完善需求是我在做项目体会到的。<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 我们将用例完整的填写到用例说明的时候，会发现有时这个说明写不下去了，写不下去的原因是因为你根本不知道这里该如何处理。比如某个用例的扩展流程&#8220;当无法找到当前记录时，系统应......&#8221;这时你发现系统要怎么做是不知道的，因为需求里没有写明，这时就要和客户沟通了。当你把所有的用例都填写完成后，基本上产品的样式就出来了。</p>
<p>&nbsp;&nbsp;&nbsp; 我见过有人只写主流程，而不写扩展流程的，我的经验告诉我，如果不写扩展流程你会死得很惨。就像我们出门旅行，你只带了必用品，没有带&#8220;谢丽婷&#8221;，到时你的旅行就行可能变成公厕观光游，还是付费的。</p>
<p>&nbsp;&nbsp;&nbsp; 所以必须写完扩展流程。不过工作量和风险是成正比的，因为扩展流程往往是主流程的三到五倍。</p>
<p>&nbsp;&nbsp;&nbsp; 用例图画一个主体的就行了，千万别给每个用例画图，因为那样会变成一个小人用长矛插一个鸡蛋，很难看的，同时也没啥大用处。有空多写点用例说明吧。</p>
<p>&nbsp;&nbsp;&nbsp; 好像这样做要写很多用例了，这次我做项目就写了200多页用例，如果这个用例只是给客户看看的实在是太浪费了。别急后面我会讲这个用例怎么用到开发中。</p>
<p>&nbsp;&nbsp;&nbsp; 好了用例写好了，《需求规格说明书》完成了，现在要做一件很重要的事---签字。</p>
<p>&nbsp;&nbsp;&nbsp; 找到客户，客户说这么多要看一下才能签字。<br>&nbsp;&nbsp;&nbsp; 好，给你们看吧。这一看就是一星期。</p>
<p>&nbsp;&nbsp;&nbsp; 其实给客户签字的东西写得越多就越有利。你想一本200页的文档，你会逐项逐字的看吗？最终客户同意签字了。</p>
<p>&nbsp;&nbsp;&nbsp; 为什么说签字重要呢，写《需求规格说明书》就是草拟圣旨，圣旨不盖玉玺是没用的，签字就是盖章了。很多人感觉到给客户签字后，客户的需求依然想变就变，细毫不为以前的签字而脸红，项目管理的书上说签字就是确认，是不应改变的，书上还说签字是对客户的约束，但现实根本和书上说的不一样啊。其实大可不必为这种事大惊小怪。因为客户从来没看过项目管理的书啊。</p>
<p>&nbsp;&nbsp;&nbsp; 其实这个问题要从圣经说起。上帝造人后，亚当和夏娃的子孙，决定通过自己的能力建造一座塔，一座通到天堂的塔，圣经里称为巴比伦塔。上帝这老小子挺缺德的，他不想大家都上天堂，于是给不同的人类赋于了不同语言，好家伙。大家不能沟通了，那造塔计划也就失败了。这是历史上记载最早的失败项目，失败原因是沟通不畅。之后语言们各自发展直到现在。现在我们看到最大的文化差异就是象型文字的代表汉语与拼音文字的代表英语两者产生的。<br>&nbsp;&nbsp;&nbsp; 签字文化发展于英语也就是中国人眼里的西方世界，原因很简单，英文仅有26个字母，每个书写不同的主要点在字母与字母间的连接，而老外签名一般都是一笔就写好了。这样造成老外的签名模仿难度极大，被肉眼分辩的成功率较高。<br>&nbsp;&nbsp;&nbsp; 再看看中国人签名，中国的汉字是方块字，字与字之间一般不连，而汉字发展了5000多年，还优雅的发展出大量的书法门派，中国人把写字提升到艺术层次（我是没见过西方人搞书法展的）。导致临摹胜行（小时候我还写过《庞中华字帖》呢）。经过这么多年，中国人多少都有临摹的基因，所以用心学个人的笔迹不是很困难，但是发现两者不同却要笔迹专家的水平（小时候在考卷上模仿家长签字，老师都很难发现）。久而久之，中国人对签字变得不再用心了，签字认证也就不被世面接受。</p>
<p>&nbsp;&nbsp;&nbsp; 在这种环境下，你一定要求客户签字认证，是很困难的。当然了项目管理的书没有说错，毕竟那是老外的东西。所以要控制客户的疯狂变更，还要想别的办法？后面我将详细说一下，我是怎么控制客户变更的。</p>
<p>&nbsp;&nbsp;&nbsp; 在我的勇气（敢给客户安排工作）和智慧（写了厚厚的需求说明）下，需求总算确定下来了。</p>
<p>PS：本文有对上帝不尊重的地方，在此向上帝和基督徒们致歉</p>
<img height=1 src="http://www.cnblogs.com/Pegasus_cc/aggbug/1383415.html?type=1" width=1><br><br>--------------------------<br>新闻：<a href="http://news.cnblogs.com/n/44667/" target=_blank>为何微软该发布Linux版IE?</a><br>导航：<a href="http://www.cnblogs.com/" target=_blank>博客园首页</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com/" target=_blank>知识库</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com/" target=_blank>新闻</a>&nbsp;&nbsp;<a href="http://job.cnblogs.com/" target=_blank>招聘</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/" target=_blank>社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/group.htm" target=_blank>小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q" target=_blank>博问</a>&nbsp;&nbsp;<a href="http://wz.cnblogs.com/" target=_blank>网摘</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com/" target=_blank>找找看</a><br>文章来源:<a href="http://www.cnblogs.com/Pegasus_cc/archive/2009/02/03/1383415.html">http://www.cnblogs.com/Pegasus_cc/archive/2009/02/03/1383415.html</a> 
<img src ="http://www.cnitblog.com/jc213/aggbug/54238.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/jc213/" target="_blank">winter_IT</a> 2009-02-04 16:25 <a href="http://www.cnitblog.com/jc213/archive/2009/02/04/54238.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]项目那点儿事(四) ---胜负在此一举[需求分析]之看破对手</title><link>http://www.cnitblog.com/jc213/archive/2009/02/04/54239.html</link><dc:creator>winter_IT</dc:creator><author>winter_IT</author><pubDate>Wed, 04 Feb 2009 08:25:00 GMT</pubDate><guid>http://www.cnitblog.com/jc213/archive/2009/02/04/54239.html</guid><wfw:comment>http://www.cnitblog.com/jc213/comments/54239.html</wfw:comment><comments>http://www.cnitblog.com/jc213/archive/2009/02/04/54239.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/jc213/comments/commentRss/54239.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/jc213/services/trackbacks/54239.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 自从第一次交手完毕后，毕（其实是鄙，我不想用这个字，就私自换了一个）人回到公司，先与首辅同志汇报一下，再看看我那五万丘八练得如何，之后拿出&#8220;锦囊&#8221;开始着手整理客户的需求。整理需求也是很有学问的，首先是要区分里面的有用的需求和无用的废话。怎么区分啊，当然不是用SELECT语句或者把这句话通过泛型引入到类的方法里，之后等待系统返回是true还是false了。能看出里面真正的需求，与找到对手破绽都要用到一样本领，我们一般把这种本领称为行业经验。</p>
<p>&nbsp;&nbsp;&nbsp; 行业经验是如何炼成的?</p>
<p>&nbsp;&nbsp;&nbsp; 我们知道战争是分军种的，比如海军、陆军等。项目也是分行业的。比如制造业、物流业、政府行业、金融行业等等。<br>&nbsp;&nbsp;&nbsp; 做为IT产业，属于服务型行业。我们知道服务型行业必须依附于生活需要所存在，如饭店、桑那以及那些路边亮红灯小店里招手的。那IT产业也同样了，比如这家公司是给政府做电子政务，那家公司是给制造业做ERP。一个项目经理在同样的行业时间久了，形成对这个行业结构和业务形态的了解就是他的行业经验。行业经验越多，做起来同行业的业务就越熟练越快，成功机率也就越高。当然了也存在那些无师自通的猛人，我们称为天才。我这里只讲一般性，超人和蜘蛛侠不在我讲的范围。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有了行业经验，在需求分析时就体现出这种经验的重要性了（说明一点需求分析应该是BA做的，但在国内现状很多时候这种工作都是项目经理代劳的）。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 回到我&#8220;锦囊&#8221;里的那些需求吧。由于我做物流行业7年了，所以较容易分析出其中的需求和废话。并发现其中有多种破绽（业务流程有漏洞、需求之间相互矛盾、需求不清晰）<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 那要是没有行业经验怎么办呢？<br>&nbsp;&nbsp;&nbsp; 如果你现在到一个新的行业，不能依赖原有的行业经验来判断，千万别以为ERP和物流都是供应链的应该差不多吧。在行业里可别认亲戚，因为我们的祖先早就告诉我们了&#8220;隔行如隔山&#8221;。所以在新行业中，要放弃原来的行业经验，从零开始。当然了困难肯定是有的（没有困难找项目经理做啥），缺少行业知识时，最重要的一点，就是在和客户交手时，你根本没法招架，就像你是少林派，非得和西洋拳交手，不出半分钟你就被罚下场了，理由是伤害对方腰带以下，而且用的是脚。</p>
<p>&nbsp;&nbsp;&nbsp; 我们玩帝国时，在不明了敌人数量和位置的时候，你应该要尽量收缩你的部队做好防卫，之后派出侦骑（斥侯）去探明对手的虚实。<br>&nbsp;&nbsp;&nbsp; 同理在和客户交手时，把他们所有的招数都记下来，一定要记到&#8220;锦囊&#8221;里，如果记到哪张报纸上后来不见了，你自己想办法吧。记下后，回到公司逐招分析，不会就百度一下，做到尽量理解，如果能发现对手招数中的破绽，恭喜你，你现在可以看到对手（客户）的破绽了。用笔在破绽的地方标出来。</p>
<p>&nbsp;&nbsp;&nbsp; 在双方第二次面对面时，我提出业务流程的漏洞，客户开始边和我讨论边思考，但我明显感觉到讨论时向我学习的成分在增加。因为这就像打仗时看破对手的阵型一样，对方觉得你很专业，至少比他强。而我告知他漏洞的行为让他觉得，你在为他着想，对你的好感和信任都会大增。<br>&nbsp;&nbsp;&nbsp; 这是个机会，战场上要时刻占据主动，但项目中有时要以退为进。之后我摆出第二招&#8220;欲擒故纵&#8221;。<br>&nbsp;&nbsp;&nbsp; 把相互矛盾的需求提了出来。并把解决问题的决定权交给客户了。这回客户就有活干了。当敌人不动时是不会有破绽的，破绽总是出现在出招后。客户为了解决矛盾的需求，开始变更原来的说法，这时我又抓住一个新的漏洞，彻底捍卫了我在这次战场上的主动权。<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 最后把几个需求不清晰的部分，交给客户。对方的回答时，回去再好好仔细想想。我知道鸣金的时候到了。</p>
<p>&nbsp;&nbsp;&nbsp; 我们是做项目又不是真的打仗，得了便宜就跑。收队！</p>
<p>&nbsp;&nbsp;&nbsp; 这次交手可是收获颇丰啊，现在形势很好啊，是大好不是小好。以后我再和客户沟通就不用担心了。俗话说：人的名，树的影。意思就是关羽没劈华雄、战吕布、斩颜良、诛文丑时，连出战单挑的机会都很难，而成名后找关羽的人就要抬棺材才能上阵。所以此次之后，客户将会对我的业务能力有一个肯定。在未来这个肯定会带来意想不到的结果。</p>
<p>&nbsp;&nbsp;&nbsp; <br>篇后话</p>
<p>&nbsp;&nbsp;&nbsp; 昨天Sail跟我说，需求这段我写得战争味太浓了。我是很想写的花香水美的，但是这种两者对抗除了战争，我实在找不到再精准的比喻了。<br>&nbsp;&nbsp;&nbsp; 其实看破对方需求破绽的主要用途不是为了项目的进度，而是为了让你，就是乙方占据项目的主动权，不让项目失控。从看破对手的行为体现出你高人一等的水平，使对方对你的能力进行肯定并且相信你。就像股票一样，有个人说明天大盘会到XXXX点，你不信，结果预言成真。第二次他又预言中了，到第三天还是一样，如此5、6次，你会认为这个人很牛是股神，并且完全的相信这个人讲述关于股票的一切吗？看看带头大哥的事件就知道了，这种心理作用还是很大的。</p>
<img height=1 src="http://www.cnblogs.com/Pegasus_cc/aggbug/1382777.html?type=1" width=1><br><br>--------------------------<br>新闻：<a href="http://news.cnblogs.com/n/44666/" target=_blank>MOTO CEO称Windows Mobile 7在2010年推出</a><br>导航：<a href="http://www.cnblogs.com/" target=_blank>博客园首页</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com/" target=_blank>知识库</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com/" target=_blank>新闻</a>&nbsp;&nbsp;<a href="http://job.cnblogs.com/" target=_blank>招聘</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/" target=_blank>社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/group.htm" target=_blank>小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q" target=_blank>博问</a>&nbsp;&nbsp;<a href="http://wz.cnblogs.com/" target=_blank>网摘</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com/" target=_blank>找找看</a><br>文章来源:<a href="http://www.cnblogs.com/Pegasus_cc/archive/2009/02/02/1382777.html">http://www.cnblogs.com/Pegasus_cc/archive/2009/02/02/1382777.html</a> 
<img src ="http://www.cnitblog.com/jc213/aggbug/54239.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/jc213/" target="_blank">winter_IT</a> 2009-02-04 16:25 <a href="http://www.cnitblog.com/jc213/archive/2009/02/04/54239.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]项目那点儿事(三) ---胜负在此一举[需求分析]之角斗开始</title><link>http://www.cnitblog.com/jc213/archive/2009/02/04/54240.html</link><dc:creator>winter_IT</dc:creator><author>winter_IT</author><pubDate>Wed, 04 Feb 2009 08:25:00 GMT</pubDate><guid>http://www.cnitblog.com/jc213/archive/2009/02/04/54240.html</guid><wfw:comment>http://www.cnitblog.com/jc213/comments/54240.html</wfw:comment><comments>http://www.cnitblog.com/jc213/archive/2009/02/04/54240.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/jc213/comments/commentRss/54240.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/jc213/services/trackbacks/54240.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 上回书说到，我们准备好资料，到客户处进行第一次面谈。一路上换了地铁换公交，终于到客户单位了。<br>&nbsp;&nbsp;&nbsp; 大家分宾主落座，双方就项目情况进行了亲切友好的会谈，为加强甲乙关系和物流项目的成功做出了贡献。</p>
<p>&nbsp;&nbsp;&nbsp; 好了，套话（官话）讲完了。现在要说正事了，真正做事，可不像上面说得那么好看。</p>
<p>&nbsp;&nbsp;&nbsp; 这是第一次见面，但双主的角斗在见面前就开始了。这是争夺项目主夺权的战斗。首先出场的是希望少花钱多办事的甲方，上身休闲夹克，下身西裤，手里拿着一个茶杯，还有一个记事本，嘴里还叼着香烟。之后出场的希望多赚钱少办事的乙方，全身西装，内着衬衫领带，手夹公事包。</p>
<p>&nbsp;&nbsp;&nbsp; 看到双方阵容了吧。记得穿西装卖东西肯定比穿休闲装卖的贵，即使西装卖的东西比休闲装的差一些。所以这身穿束是我仔细考虑后才穿上的。</p>
<p>&nbsp;&nbsp;&nbsp; 大家发现了吗，甲方的人叼着香烟呢。大家知道啊，香烟有害健康。如果这时我发挥环境保护组织和绿色和平组织的精神，上去讲道理列图表，再把那个子弹和香烟的比较图拿出来，那我肯定是疯了。香烟有害，也要看香烟在谁的嘴上，在客户嘴上，你说什么也不能把烟抢过来，扔到地上，再狠狠的踩两脚。那怎么办啊？<br>&nbsp;&nbsp;&nbsp; 医学上说吸二手烟的危害最大，那为了不吸二手烟，我也把烟点上好了。声明一下，本人平常是不抽烟的。当然了和客户一起抽烟，绝不仅仅是因为二手烟的原因。</p>
<p>&nbsp;&nbsp;&nbsp; 人其实是很奇怪的动物，比如你要是喜欢上网，可是对方却不爱上网；你要是喜欢玩网游，但对方搬出一堆玩物丧志的道理，我想你也不太会喜欢和这样的人在一起的。同理，如果你喜欢抽烟，你当然觉得和抽烟的人沟通更好了。其实这是种暗示心理，就是说我和你是同类人，我们有共同的爱好。</p>
<p>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 在双方各自释放烟雾弹的情况下，正式的交战开始了。首先乙方进攻。很奇怪的，我和甲方进行过多年战争，一直以来首先发动进攻的总是乙方，有次我故意不说话，发现连甲方也不说话了，在等着我。<br>&nbsp;&nbsp;&nbsp; 先介绍一下自己吧，以及自己对这个合同的看法，并提出征求甲方的意见。<br>&nbsp;&nbsp;&nbsp; 甲方的意见很快就回复了。按合同做。<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 要是按合同做，我过来干什么啊，这个合同哪有可执行性啊，按照合同写的，我就算把SAP的产品线都拉过还不一定够呢。</p>
<p>&nbsp;&nbsp;&nbsp; 看来甲方是想吃定我了。</p>
<p>&nbsp;&nbsp;&nbsp; 不行，按合同做肯定是个死，不过还好我们合同里有一条，&#8220;实际开发以《需求规格说明书》为准&#8221;。利用这一条无数的IT企业忽悠过甲方客户。</p>
<p>&nbsp;&nbsp;&nbsp; 先签了合同，其实合同里面除了时间、金额、付款方式外就没有别的有用的东西了。合同中的系统要求、功能描述统统会被《需求规格说明书》所代替。而甲方在这份文件签字时，乙方一般会说这是公司必要的程序，只是签字确认没有别的意思。晕乎乎的甲方就签了，到验收时才发现原来验收是按照《需求规格说明书》来做的，不是按照合同。</p>
<p>　　当然也存在老油条甲方，来个将计就计，利用这个规则把乙方涮了的。</p>
<p>&nbsp;&nbsp;&nbsp; 鉴于历史的经验，我决定绕开合同，先做实际的需求调研。</p>
<p>&nbsp;&nbsp;&nbsp; 本次参与谈判的甲方都是总公司的管理人员，这些人员是不参与下边实际操作的。由于合同是他们签定的，那就从他们开始调研吧。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 相关部门的负责人和技术人员都到场了，我翻开自己的&#8220;锦囊&#8221;（不知道此是何物者，请查《项目那点儿事二）》），把我准备好的问题一个一个的询问。甲方也算配合，是有什么说什么，不过明显废话多于实话。先不管废话还是实话都记上。顺便再问一下，他们实际工作是怎么做的，记下来。<br>&nbsp;&nbsp;&nbsp;&nbsp; 这次进攻还算顺利，虽说没抓到对方的什么将领，至少锣鼓帐篷还是得了一些的，同时了解了一下对手的基本情况。那咱们见好就收，与甲方主帅（甲方项目负责人）打个照呼，改日再战（定下下步工作计划，未来项目安排，项目例会安排等等）。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 至此第一次见面算是结束了。</p>
<p>篇外话<br>&nbsp;&nbsp;&nbsp;&nbsp; 有人问我，为什么一定要站到客户的对立面上，难道不能双赢吗？如果有同样想法的同志，请翻一下400年前，亚当.斯密写的《国富论》，里面提到一个真理——人天生，并将永远，是自私的动物。<br>&nbsp;&nbsp;&nbsp;&nbsp; 换句话说，每个人都会站在自己的角度想事情。做为项目的甲乙双方，两者的利益点是不同，双方都希望用最少的代价换来最大的成果，不同的是对代价和成果的理解正好是相反的。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 而项目经理就是要让双方在代价和成果上取得平衡。就是说你不能让客户占太多便宜，也不能让公司得太大的实惠，因为一方的获胜总是以另一方的失败为代价的。这就是PMBOK里面讲到的控制。项目经理要能够控制整个项目，一但你无法控制客户，那你的项目就要失控了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 有人就说客户是项目的出资方，是你的衣食父母啊。可实际上你的衣食父母是你的老板。<br>&nbsp;&nbsp;&nbsp;&nbsp; 按照家族关系算，客户是你老板的父母，就是你爷爷。现在你爷爷出钱买你爸的东西，这件事正好由你来负责，而你知道你爸之所以卖东西给你爷爷是因为他想赚钱，那你要怎么做呢。尤其当你爸说，事成后分20%利润给你时。<br>&nbsp;&nbsp;&nbsp;&nbsp; 所以我们要平衡，爷爷不开心时，肯定爸爸会来收拾你，爸爸不开心时，肯定你要挨打了。所以这种关系就是由项目经理来操心了。关于爸爸和爷爷，PMBOK里称为项目干系人，维护项目干系人的利益是项目经理的职责，这是PMP的道德准则。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 我之所以把和客户的沟通形容为战争，是让大家清醒的认识到，不管你和客户有多好，要知道客户就是客户，不可能成为自己人。在项目中除了你的公司，你没有自己人。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 对于需求调研，古人有话证：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-FAMILY: 隶书"><span style="FONT-FAMILY: 幼圆">&#8220;兵者，国之大事。死生之地，存亡之道。不可不察也&#8221; --孙子兵法 <span style="FONT-SIZE: x-small">始计</span></span></span></p>
<img height=1 src="http://www.cnblogs.com/Pegasus_cc/aggbug/1380402.html?type=1" width=1><br><br>--------------------------<br>新闻：<a href="http://news.cnblogs.com/n/44664/" target=_blank>微软CEO鲍尔默：科技产业终将成为经济救世主</a><br>导航：<a href="http://www.cnblogs.com/" target=_blank>博客园首页</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com/" target=_blank>知识库</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com/" target=_blank>新闻</a>&nbsp;&nbsp;<a href="http://job.cnblogs.com/" target=_blank>招聘</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/" target=_blank>社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/group.htm" target=_blank>小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q" target=_blank>博问</a>&nbsp;&nbsp;<a href="http://wz.cnblogs.com/" target=_blank>网摘</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com/" target=_blank>找找看</a><br>文章来源:<a href="http://www.cnblogs.com/Pegasus_cc/archive/2009/02/01/1380402.html">http://www.cnblogs.com/Pegasus_cc/archive/2009/02/01/1380402.html</a> 
<img src ="http://www.cnitblog.com/jc213/aggbug/54240.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/jc213/" target="_blank">winter_IT</a> 2009-02-04 16:25 <a href="http://www.cnitblog.com/jc213/archive/2009/02/04/54240.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>