﻿<?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/chinawin/category/22162.html</link><description>男人就不是该对生命后悔</description><language>zh-cn</language><lastBuildDate>Thu, 03 May 2007 00:53:53 GMT</lastBuildDate><pubDate>Thu, 03 May 2007 00:53:53 GMT</pubDate><ttl>60</ttl><item><title>对面向接口编程的体会（2）</title><link>http://www.blogjava.net/chinawin/archive/2007/05/01/114929.html</link><dc:creator>我们走在JAVA的光明大道上</dc:creator><author>我们走在JAVA的光明大道上</author><pubDate>Tue, 01 May 2007 04:17:00 GMT</pubDate><guid>http://www.blogjava.net/chinawin/archive/2007/05/01/114929.html</guid><wfw:comment>http://www.blogjava.net/chinawin/comments/114929.html</wfw:comment><comments>http://www.blogjava.net/chinawin/archive/2007/05/01/114929.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/chinawin/comments/commentRss/114929.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chinawin/services/trackbacks/114929.html</trackback:ping><description><![CDATA[《JAVA与模式》这本书，一年前就买了，但说真的，当时真的是只看得懂字，看不明白道理！<br>所以当有空时我就又拿出来翻翻，这次对于第3章的软件可维护性与可复用性，特别有感触！<br><br>我也不想抛很多技术名词出来（开-闭 原则之类的），亲身经历告诉我，如果看的人不是自己明白其中的道理，那他看多了这种名词，就习惯的把他当口头语来用了，已经明白的人，自然有比我更高的认识。<br><br>所以我选择一种比较&#8220;俗&#8221;的方式，说出我的体会。（因为我就是一俗人）<br><br>还是回到接口上来吧，什么时候接口才能起作用？当你需要处理将来不断变化的需要时！<br><br>有这么一个场景：<br><br>某导演要拍个大片，然后开会时他对助手说出要找女一号，并对女一号要求如下：<br><br>1。全国知名女性；<br>2。有绝世容貌；<br>3。身材一流；<br><br>好了先说这3个吧。<br><br>助手根据要求去找来 某某女明星A，但助手知道，导演老人家不会一看就看中的，所以准备联系了女明星B，女明星C.<br><br>果然，导演开始觉得女明星A还不错，但是没过2天，觉得要换，（演艺圈的事谁说得清呢），这时助手马上有B，C来代替！<br><br>助手的工作应变十分的好，导演大大的有赏！<br><br>现在我们来简单分析下：<br><br>把导演对女明星的要求作为接口的定义。<br>该接口是三个特征的集合：<br><br>1。全国知名女性；<br>
2。有绝市容貌；<br>
3。身材一流；<br><br>导演只是根据符合这3个特征要人，而助手根据这3个特征去找人，显然女明星 A，B，C 必须同时符合这3个特征，（也就是实现了这个接口）<br><br>导演在不满意&nbsp; 女明星 A 后，能迅速找到 B ，C 做替换，助手自然是功不可没，但根本原因，是因为导演的要求是放在 特征的集合 上.<br><br>试想如果导演当初是指名到姓的要谁谁做女一号，然后找来又不满意了，要求这么具体，助手哪能那么快找来其他人代替？<br><br>下面开始要抛点名词了，我把这里导演的先见之明叫做 &#8220;依赖抽象&#8221;！<br><br>public interface&nbsp; 女一号{<br><br>&nbsp;&nbsp;&nbsp; public void 全国知明女性();<br>&nbsp;&nbsp;&nbsp; public void 有绝世容貌();<br>&nbsp;&nbsp;&nbsp; public void 身材一流();<br><br>}<br><br>public class 女明星A implements 女一号{<br><br>&nbsp;&nbsp;&nbsp; public void 全国知明女性(){<br>&nbsp;&nbsp;&nbsp;&nbsp; 张某某；<br>&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; public void 有绝世容貌(){<br>&nbsp;&nbsp;&nbsp; 貌似天仙；<br>&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; public void 身材一流(){<br>&nbsp;&nbsp;&nbsp; 三围（75c,38,80）<br>&nbsp;&nbsp;&nbsp; }<br>public class 女明星B implements 女一号{<br>
<br>
&nbsp;&nbsp;&nbsp; public void 全国知明女性(){<br>
&nbsp;&nbsp;&nbsp;&nbsp; 某某姐姐；<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; public void 有绝世容貌(){<br>
&nbsp;&nbsp;&nbsp; 吓死路边一头牛；<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; public void 身材一流(){<br>
&nbsp;&nbsp;&nbsp; 三围（80d，45,95）;<br>
&nbsp;&nbsp;&nbsp; }<br><br>public class 女明星C implements 女一号{<br>
<br>
&nbsp;&nbsp;&nbsp; public void 全国知明女性(){<br>
&nbsp;&nbsp;&nbsp;&nbsp; 某某神仙；<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; public void 有绝世容貌(){<br>
&nbsp;&nbsp;&nbsp;&nbsp; 人见人爱;<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; public void 身材一流(){<br>
&nbsp;&nbsp;&nbsp; 三围（70c,35,80）;<br>
&nbsp;&nbsp;&nbsp; }<br>}<br><br><br><br><br><br><br>      <img src ="http://www.blogjava.net/chinawin/aggbug/114929.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chinawin/" target="_blank">我们走在JAVA的光明大道上</a> 2007-05-01 12:17 <a href="http://www.blogjava.net/chinawin/archive/2007/05/01/114929.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对面向接口编程的体会（1）：把自己当做人来思考！</title><link>http://www.blogjava.net/chinawin/archive/2007/05/01/114909.html</link><dc:creator>我们走在JAVA的光明大道上</dc:creator><author>我们走在JAVA的光明大道上</author><pubDate>Mon, 30 Apr 2007 20:01:00 GMT</pubDate><guid>http://www.blogjava.net/chinawin/archive/2007/05/01/114909.html</guid><wfw:comment>http://www.blogjava.net/chinawin/comments/114909.html</wfw:comment><comments>http://www.blogjava.net/chinawin/archive/2007/05/01/114909.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chinawin/comments/commentRss/114909.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chinawin/services/trackbacks/114909.html</trackback:ping><description><![CDATA[<p>第一次写接口时，第一个感觉就是，写接口跟没写一样。定义一个接口，马上去写实现类！其实此时就是用着面向过程的思路写程序，然后挂了个羊头，说起来怎么也有个接口了！<br><br>今天看了一位老兄写的对于接口的心得体会，真是太有同感了！<br><br>不要为了接口而接口，当你把自己不当做是个程序员来思考时，就能把用人的思想来思考了，你不会写程序，就不会考虑细节的实现了！此时你所关注的问题就是比较抽象的了，你看这不正符合面向对象的原则吗？当年张三丰教张无忌打太极就是要把招式全忘了，你要定义接口前就先忘了自己是个程序员吧！<br>&nbsp;<br>当然不可能有100%的抽象，最终你还是要回到实现细节上来的，可此时你已是学会了太极的张无忌了！<br><br></p>
<img src ="http://www.blogjava.net/chinawin/aggbug/114909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chinawin/" target="_blank">我们走在JAVA的光明大道上</a> 2007-05-01 04:01 <a href="http://www.blogjava.net/chinawin/archive/2007/05/01/114909.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>