最近面试被问到面向接口编程,接触的不多,网上看了点例子
现在有一个computer类还有一个MP3类u盘类,因为computer类要为MP3类和u盘类提供一个usb插入接口,如果没有面向接口的编程,computer类就要为不同的设备提供不同的链接的方法,程序的可维护性变的很差,但是如果我们利用了面向接口的编程方法,我们只要定义一个链接的接口connect,然后让不同的设备实现这个接口,并且重写接口中的方法,现在我们的computer类只要与这个ConnectToUsb接口产生关系就可以了,不用再与具体的设备产生关系,这样就大大降低了类与类之间的耦合性。以后当有需要加入更多的链接设备的时候只需要实现这个接口就可以了。
ConnectUsb.java
1 public interface ConnectUsb { 2 public abstract void connect(); 3 }
MP3.java
1 public class MP3 implements ConnectUsb{ 2 3 @Override 4 public void connect() { 5 // TODO Auto-generated method stub 6 System.out.println("MP3连接USB"); 7 } 8 9 }
Radio.java
1 public class Radio implements ConnectUsb{ 2 3 @Override 4 public void connect() { 5 // TODO Auto-generated method stub 6 System.out.println("Radio连接USB"); 7 } 8 9 }
Computer.java
1 public class Computer { 2 private ConnectUsb connectusb; 3 4 public ConnectUsb getConnectusb() { 5 return connectusb; 6 } 7 8 public void setConnectusb(ConnectUsb connectusb) { 9 this.connectusb = connectusb; 10 } 11 public void connect(){ 12 System.out.println("调用实现接口的方法"); 13 connectusb.connect(); 14 } 15 }
Test.java
1 public class Test { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 Computer computer = new Computer(); 9 MP3 mp3= new MP3(); 10 Radio radio = new Radio(); 11 computer.setConnectusb(mp3); 12 computer.connect(); 13 computer.setConnectusb(radio); 14 computer.connect(); 15 }