面向接口编程
面向接口编程
这里要举一个很简单的例子来介绍面向接口编程。
我这次花时间记录下这个例子,是想提醒自己平时写代码的时候不要为了完成任务而敲代码,仅仅实现功能的代码没用的。
我通过这段时间的实习,总结出自己写代码的一些不足:
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月份,好好努力!)
上一篇: vue-router 源码之实现一个简单的 vue-router
下一篇: 为什么穿山甲一直在挖地