• 面向接口


    最近面试被问到面向接口编程,接触的不多,网上看了点例子

    现在有一个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     }
  • 相关阅读:
    thinkphp中field的用法
    Thinkphp常用标签
    thinkphp框架的相关总结
    TP 控制器扩展_initialize方法实现原理
    Thinkphp中的volist标签(查询数据集(select方法)的结果输出)用法简介
    php中遍历数组的方法
    django自定义过滤器
    centos7 安装 mysql
    centos7 安装 nginx
    centos 服务器改名
  • 原文地址:https://www.cnblogs.com/zyxiaohuihui/p/4707829.html
Copyright © 2020-2023  润新知