写之前一直都在犹豫要写点什么。看很多大神都在写博客而且还是技术含量很高的博客,我这个小白也是蠢蠢欲动啊,那么就让我从面向接口开始吧
面向接口的编程应该是一个不是很容易掌握的知识点,在这里记录下自己的点点滴滴吧
需求:现在定义一个鼠标类,一个键盘类,一个接口,键盘和鼠标都需要用到接口。定义一个主板类。主板是负责操作键盘和鼠标
代码如下:
定义的接口如下:之所以定义接口因为鼠标和键盘都有功能,定义一种规范而已
package com.mywork._01.inter;
public interface IUSB {
/**
* 定义一个方法,是具体什么操作
*/
void play();
}
定义的
键盘类如下:
package com.mywork._01.inter;
public class KeyBoard implements IUSB {
@Override
public void play() {
System.out.println("键盘在工作");
}
}
定义的
鼠标类如下:
package com.mywork._01.inter;
public class Mouse implements IUSB {
@Override
public void play() {
System.out.println("鼠标在移动");
}
}
现在定义一个主板类,功能是整合鼠标和键盘
package com.mywork._01.inter;
import java.util.HashMap;
import java.util.Map;
/**
* 主板类
* @author 张凌飞
* 2017-10-4
*/
public class MotherBoard {
/**
* 定义一个map集合,根据key-value去赋值和取值操作
*/
private Map<String,IUSB> plugins = new HashMap<>();
/**
* 是把不同的对象装进去
* @param name key值
* @param value 体现了面向接口用的是IUSB
*/
public void install(String name,IUSB value){
plugins.put(name, value);
}
/**
* 调用这个方法体现出在主板上的不同功能
*/
public void doWork(){
for (IUSB usb : plugins.values()) {
usb.play();
}
}
}
现在定义一个测试类去测试是否符合咱们的需求
package com.mywork._01.inter;
public class App {
public static void main(String[] args) {
MotherBoard mo = new MotherBoard();
Mouse m = new Mouse();
mo.install("鼠标", m);//把鼠标装进去
KeyBoard k = new KeyBoard();
mo.install("键盘", k);//把键盘装进去
mo.doWork();//调用主板方法看是否都在工作
}
}
最后的结果如下: