編輯:Android開發實例
應用場景舉例:
“十六年後 在此重會;夫妻情深 勿失信約”,悲痛欲絕的楊過跑到斷腸崖,看到小龍女親手留在石壁上的文字,即驚喜又痛苦不欲生:“十六年!為什麼要等到十六年?!”。
但是信約已定,癡情的楊過也只能等十六年了。
離開斷腸崖後,楊過一邊開始了自己的苦苦的等待與思戀,一邊寄情練功,當然開始時 候也忘不了吃那療傷的草藥。後來楊過巧遇了千年神雕,和神雕一見如故,從此便開始修煉獨孤求敗的武功。無事可做,寄情練劍倒也不失為人生的一大快事。“相思無用,唯別而已。別期若有定,千般煎熬又何如?莫道黯然銷魂,何處柳暗花明?!”,驚天地泣鬼神的黯然銷魂掌就這樣誕生了。時 光飛逝,恍惚間快過了十六年。此時,楊過的神功已成,想象著十六年約期就將來臨,心中想象著自己一生的摯愛,不免感慨和激動萬分!在祭拜過求敗他老人家之後,楊過和神雕一起開始去赴那場長達十六年之久的約會。令眾生激動和艷羨。
再出江湖的楊過懲奸除惡、幫扶弱小,很快就俠名遠播,被人尊稱為“神雕俠”。自己心中想象著小龍女過往的一笑一颦,想象著她是怎麼度過這十六年的,不禁催生了更加濃烈的相思和相見之情。
千呼萬喚,終於,這一天來到!
斷腸崖邊,佳人芳蹤跡未現,過兒萬念俱灰,縱身跳下懸崖…
幸好懸崖下面是深淵,楊過並沒有死,被水沖到了岸邊的楊過蘇醒過來後,看到了很多小蜜蜂,他一眼就認出了這是小龍女樣的蜜蜂,莫非龍兒就在附近?最後在深潭水下,楊過找到了自己苦苦等待了十六年的摯愛。原來小龍女得知自己無藥可救,也縱身跳下斷腸崖,十六年之期只不過是為了讓楊過不要輕生。但是跳崖後的小龍女並沒有死掉,接著就在谷底一個世外桃源的地方慢慢的療傷,竟然完全康復了。真是有情人終成眷屬,有情人終成名人。
定義:
接口是一系列方法的聲明,是一些方法特征的集合,一個接口只有方法的特征沒有方法的實現,因此 這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。
接口是對抽象的抽象。
接口就是標准,就是承諾。
針對接口編程,不要針對具體編程是依賴倒轉原則的另外一種表述。
針對接口編程又稱為面向接口編程,針對接口編程就是要先設計一系列的接口,把設計和實現分離開,使用時只需引用接口即可,也由於系統各部分的解耦合。如下圖所示:
故事分析:
“十六年後 在此重會;夫妻情深勿失信約”就是針對接口編程的一個絕妙的例子。而且最後還加了“信約”一次。言外之意就是說我們說好了要十六年在此地重逢,我們倆都要遵照此約定。根據上面的故事,小龍女和楊過制定好接口後,就縱身跳下了懸崖,不管自己的過兒了,因為她此時已經不用關心過兒怎麼去再十六年後河自己相見,只要十六年後在此地相見即可,也就是說小龍女針對和使用都是接口,至於楊過怎麼實現,她此時已經身患絕症而無法顧及了。而楊過看過此約定後,雖然無奈,但也只好照辦。具體實現如下:回去吃斷腸草調理自己,然後以神雕為伴練習武功,知道練成了黯然銷魂掌而神功大成,然後就是在江湖上做俠義之事,然後就是按照信約與十六年後來 到斷腸崖邊;而小龍女就在谷底慢慢的調養,十六年後身體早已康復,而且越發迷人了。當楊過沒有見到小龍女時縱身跳崖,遵照了“問世間情為何物,直教人生死相許”標准。
總結一下:小龍女和楊過定下接口,然後各自針對接口各自獨立的做事,最終得以相見。
針對接口編程是未來提高程序的可維護性、可伸縮性和可復用性。如果你在一個類中直接使用另外的一個,這樣就把兩個類緊密的聯系在了一起,以後如果想做出改變就很難了。如果針對接口編程,當業務變化時我們只需要用一個新的類實現接口即可,而客戶端依舊可以使用接口引用新的類的,同時也保證了客戶端的不變性。這樣客戶端和實現端互不影響,保持了各自的相對獨立性。正如小龍女和楊過的,他們樹立了十六年制約後,就不用關心彼此的如何去赴這場約定,只需要按照約定做事就OK了。互不影響,自由在在。如下圖所示:
Java代碼實現:
新建一個“信約”的接口,這個接口是楊過和小龍女都必須通過自己的方式實現的。代碼如下:
package com.diermeng.designPattern.dating;
/*
* 楊過和小龍女定下的約定接口
*/
public interface Dating {
/*
* 約定的接口
*/
public void dating();
}
然後分別建立楊過和小龍女的實現類,分別實現上面的接口。代碼依次如下:
package com.diermeng.designPattern.dating.impl;
import com.diermeng.designPattern.dating.Dating;
/*
* 楊過對接口的實現
*/
public class Yangguo implements Dating {
/*
* 姓名
*/
String name;
/*
* 默認空構造方法
*/
public Yangguo(){}
/*
* 傳入name參數的構造方法
*/
public Yangguo(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/*
* (non-Javadoc)
* @see com.diermeng.dating.inter.Dating#dating()
* 楊過對約定的實現
*/
public void dating() {
if(this.getName()!=null){
System.out.println(this.getName() " : " "十六年後 在此重會;夫妻情深 勿失信約");
}
else{
System.out.println("十六年後 在此重會;夫妻情深 勿失信約");
}
}
}
package com.diermeng.designPattern.dating.impl;
import com.diermeng.designPattern.dating.Dating;
/*
* 小龍女對接口的實現
*/
public class XiaoLongnv implements Dating{
/*
* 姓名
*/
String name;
/*
* 默認空構造方法
*/
public XiaoLongnv(){}
/*
* 傳入name參數的構造方法
*/
public XiaoLongnv(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/*
* (non-Javadoc)
* @see com.diermeng.dating.inter.Dating#dating()
* 小龍女對約定的實現
*/
public void dating() {
if(this.getName()!=null){
System.out.println(this.getName() " : " "十六年後 在此重會;夫妻情深 勿失信約");
}
else{
System.out.println("十六年後 在此重會;夫妻情深 勿失信約");
}
}
}
建立一個測試類,代碼如下:
package com.diermeng.designPattern.dating.client;
import com.diermeng.designPattern.dating.Dating;
import com.diermeng.designPattern.dating.impl.XiaoLongnv;
import com.diermeng.designPattern.dating.impl.Yangguo;
/*
* 對楊過和小龍女約定進行測試的客戶端
*/
public class DatingTest {
public static void main(String[] args)
{
//分別實例化實例化
Dating yangguo = new Yangguo("過兒");
Dating xiaoLongnv = new XiaoLongnv("龍兒");
//調用各自的方法
yangguo.dating();
xiaoLongnv.dating();
}
}
程序運行結果如下:
過兒 : 十六年後 在此重會;夫妻情深 勿失信約
龍兒 : 十六年後 在此重會;夫妻情深 勿失信約
已有應用簡介:
Java是相面對象編程的語言,而面向對象編程的核心之一就是要針對針對接口編程、不要針對實現編程,在Java API中的標志接口java.io.Serializable和java.rmi.Remote等就是我們經常遇到的,下面以 java.io.Serializable為例說明一下,源代碼如下:
package java.io;
public interface Serializable{}
UML圖形如下圖所示:
當然在J2EE框架的使用中到處都是針對接口編程的身影。例如在www.babasport.com中幾乎每一處都是針對接口編程的,令人印象非常深刻的一點就是巴巴運動網把對數據庫的CRUD等基本操作封裝在了一個統一接口中,這給以後的代碼的編寫和數據庫的操作帶來了極大的方便,當然這裡也使用了Java 5的泛形技術。有興趣的讀者可以去學習巴巴運動網的源代碼。
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個
本文實例講述了Android編程使用Fragment界面向下跳轉並一級級返回的實現方法。分享給大家供大家參考,具體如下: 1.首先貼上項目結構圖: 2.先添加一
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我