面向接口编程

Posted xtuxiongda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向接口编程相关的知识,希望对你有一定的参考价值。

面向接口编程

这里要举一个很简单的例子来介绍面向接口编程。

我这次花时间记录下这个例子,是想提醒自己平时写代码的时候不要为了完成任务而敲代码,仅仅实现功能的代码没用的。

我通过这段时间的实习,总结出自己写代码的一些不足:

1.接到需求之后,只是考虑采用什么技术来实现,一想到就开始敲代码,啥也不考虑了。其实要考虑的东西有很多,比如:性能,日志,通用性,可读性

比如性能方面:hashmap的性能比hashtable就要强很多,hashtable的优势只是线程安全,但并发情况下往往用currenHashMap,它并发性高于hashmap,性能高过hashtable

比如日志方面:得养成打日志的习惯,举个上周五的例子,线上的邮件系统炸了,结果服务器上查日志根本看不出哪里出问题,我又得回来本地测试环境找问题,这就是没养成打日志习惯的弊端

通用性:面向接口编程就是实现通用编程的一个方法,待会下面会放出一个例子

可读性:方法的文档注释,命名规范等等(优秀的代码,别人单看看代码就能熟悉整个业务流程,所以命名很重要)

 

接下来,言归正传,下面举个面向接口编程的例子:

package com.xiongda.interfacecode;

/**
 * 
 * @author xiongda
 * @date 2018年8月4日
 * @description 面向接口编程例子
 *  主机 连接外设进行工作 
 *  键盘 :插入主机进行工作 
 *  鼠标 :插入主机进行工作
 */
interface OuterDevice {
    void work();
}

class Keyboard implements OuterDevice {
    public void work() {
        System.out.println("键盘开始工作!");
    }
}

class Mouse implements OuterDevice {
    public void work() {
        System.out.println("鼠标开始工作!");
    }
}

class Host {
    public void connectTo(OuterDevice outerDevice) {
        outerDevice.work();
    }
}

public class Device {
    public static void main(String[] args) {

        Host host = new Host();
        OuterDevice keyboard = new Keyboard();
        host.connectTo(keyboard);
        OuterDevice mouse = new Mouse();
        host.connectTo(mouse);
    }
}

键盘和鼠标都属于外设,需要连接主机进行工作。所以键盘和鼠标这些应该作为同一类,而不是一堆方法,连接鼠标,连接键盘。。。。。

所以这时候就需要定义一定的规范,而接口就是一种规范。

例子很简单,一看就明白,但我希望自己能够在平时敲代码的时候养成这种思想,考虑通用编程,而不是等一堆东西凑起来的时候才发现这里可以改成通用的。

(新的8月份,好好努力!)

以上是关于面向接口编程的主要内容,如果未能解决你的问题,请参考以下文章

面向面试编程代码片段之GC

面向接口编程

面向接口编程和面向实现编程的区别

面向接口编程 学习 待整理

java:面向接口编程(解耦)

18. 面向接口编程