原創部落格,轉載請注明出處。
相信小夥伴們都知道面向接口程式設計的好處,這裡我不再叙述。重點是怎麼了解這種困擾新手的方式。程式設計嘛,肯定是為了解決實際問題,如果不能很好的和生活中的事例相結合,單純炫技把代碼弄得很複雜,我是不推薦的。
廢話不多說,先來看一段代碼:
public interface JustInterface {
void justMethod(Object object);
}
public class JustInterface Impl implements JustInterface{
@Override
public void justMethod(Object object) {
// TODO Auto-generated method stub
do something…
}
}
// 在Main.class裡可以這樣聲明和初始化:
public static void main( String[] args ) {
JustInterface justInterface = new JustInterfaceImpl();
justInterface.justMethod;
}
對于這段挺正經的面向接口程式設計的代碼,包括我自己,也一直處于似懂非懂的狀态,但是具體為什麼會出現這種方式,我一定要想清楚才會安心。
接下來請允許我用一個很俗的例子來說明這種方式。
故事是這樣的,雙手受傷的獨居宅男,想吃放在面前飯桌上的青椒炒牛肉。(别問為什麼,宅男就是要吃青椒炒牛肉,也别問哪來的青椒炒牛肉,繼續看就行了),我們需要一種方法,最好是人機接口,可以幫助這位宅男不用手輕松吃到青椒炒牛肉。
市面上有一種機械臂,他對外提供了一個人機接口。而接口裡面有一個方法,這個方法聽起來很符合宅男的要求:夾起機械臂面前的物體-移動到指定坐标點-然後松開。看來隻需要把這個機械臂放在飯桌上就行了。
于是雙手受傷的獨居宅男買了一個機械臂(怎麼買的,你不用知道),想通過這個機械臂來吃青椒炒牛肉。整個歡喜的過程如下:
// 在機械臂公司裡的組裝線是這樣的:
public interface 人機接口 {
void 傳遞物體(宅男嘴裡的位置);
}
public class 機械臂 implements 人機接口 {
@Override
public void 傳遞物體(宅男嘴裡的位置) {
夾起機械臂面前的物體;
移動到 宅男嘴裡的位置;
松開物體;
}
}
// 在宅男家裡:
main 函數 {
人機接口 = new 機械臂; //宅男準備開始使用帶有人機接口的實作了傳遞物體方法的機械臂
機械臂.傳遞物體(宅男嘴裡的位置); //機械臂夾起了放在面前的青椒炒牛肉,移動到宅男嘴裡的位置,然後松開了青椒炒牛肉。
}
對比一下文章開頭給出的代碼:
public interface JustInterface {
void justMethod(Object object);
}
public class JustInterface Impl implements JustInterface{
@Override
public void justMethod(Object object) {
// TODO Auto-generated method stub
do something…
}
}
// 在Main.class裡可以這樣聲明和初始化:
public static void main( String[] args ) {
JustInterface justInterface = new JustInterfaceImpl();
justInterface.justMethod;
}
怎麼樣,這樣的通俗事例對于了解是不是簡單多了?和實際結合起來解決問題,我覺得是程式設計的首要核心。
至于宅男為什麼不把頭埋下去用嘴直接吃青椒炒牛肉呢?可能是長期玩遊戲,脖子僵硬吧。
後記:宅男在機械臂的包裝盒子裡發現了一份迷之說明書,在說明上發現了如何設定機械臂的動作,于是邪惡的思想湧入了宅男的大腦。。。