原創(chuàng)博客,轉(zhuǎn)載請(qǐng)注明出處。
相信小伙伴們都知道面向接口編程的好處,這里我不再敘述。重點(diǎn)是怎么理解這種困擾新手的方式。編程嘛,肯定是為了解決實(shí)際問題,如果不能很好的和生活中的事例相結(jié)合,單純炫技把代碼弄得很復(fù)雜,我是不推薦的。
廢話不多說,先來看一段代碼:
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;
}
對(duì)于這段挺正經(jīng)的面向接口編程的代碼,包括我自己,也一直處于似懂非懂的狀態(tài),但是具體為什么會(huì)出現(xiàn)這種方式,我一定要想清楚才會(huì)安心。
接下來請(qǐng)?jiān)试S我用一個(gè)很俗的例子來說明這種方式。
故事是這樣的,雙手受傷的獨(dú)居宅男,想吃放在面前飯桌上的青椒炒牛肉。(別問為什么,宅男就是要吃青椒炒牛肉,也別問哪來的青椒炒牛肉,繼續(xù)看就行了),我們需要一種方法,最好是人機(jī)接口,可以幫助這位宅男不用手輕松吃到青椒炒牛肉。市面上有一種機(jī)械臂,他對(duì)外提供了一個(gè)人機(jī)接口。而接口里面有一個(gè)方法,這個(gè)方法聽起來很符合宅男的要求:夾起機(jī)械臂面前的物體-移動(dòng)到指定坐標(biāo)點(diǎn)-然后松開??磥碇恍枰堰@個(gè)機(jī)械臂放在飯桌上就行了。于是雙手受傷的獨(dú)居宅男買了一個(gè)機(jī)械臂(怎么買的,你不用知道),想通過這個(gè)機(jī)械臂來吃青椒炒牛肉。整個(gè)歡喜的過程如下:
// 在機(jī)械臂公司里的組裝線是這樣的:
public interface 人機(jī)接口 {
void 傳遞物體(宅男嘴里的位置);
}
public class 機(jī)械臂 implements 人機(jī)接口 {
@Override
public void 傳遞物體(宅男嘴里的位置) {
夾起機(jī)械臂面前的物體;
移動(dòng)到 宅男嘴里的位置;
松開物體;
}
}
// 在宅男家里:
main 函數(shù) {
人機(jī)接口 = new 機(jī)械臂; //宅男準(zhǔn)備開始使用帶有人機(jī)接口的實(shí)現(xiàn)了傳遞物體方法的機(jī)械臂
機(jī)械臂.傳遞物體(宅男嘴里的位置); //機(jī)械臂夾起了放在面前的青椒炒牛肉,移動(dòng)到宅男嘴里的位置,然后松開了青椒炒牛肉。
}
對(duì)比一下文章開頭給出的代碼:
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;
}
怎么樣,這樣的通俗事例對(duì)于理解是不是簡(jiǎn)單多了?和實(shí)際結(jié)合起來解決問題,我覺得是編程的首要核心。
至于宅男為什么不把頭埋下去用嘴直接吃青椒炒牛肉呢?可能是長(zhǎng)期玩游戲,脖子僵硬吧。
后記:宅男在機(jī)械臂的包裝盒子里發(fā)現(xiàn)了一份迷之說明書,在說明上發(fā)現(xiàn)了如何設(shè)置機(jī)械臂的動(dòng)作,于是邪惡的思想涌入了宅男的大腦。。。