1.案例介绍
定义USB接口(具备开启功能、关闭功能),笔记本要使用USB设备,即笔记本在生产时需要预留可以插入USB设备的USB接口,即就是笔记本具备使用USB设备的功能,但具体是什么USB设备,笔记本并不关心,只要符合USB规格的设备都可以。鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守USB规范,不然鼠标和键盘的生产出来无法使用
进行描述笔记本类,实现笔记本使用USB鼠标、USB键盘
- USB接口,包含开启功能、关闭功能
- 笔记本类,包含运行功能、关机功能、使用USB设备功能
- 鼠标类,要符合USB接口
- 键盘类,要符合USB接口
2.案例需求分析
阶段一:使用笔记本,笔记本有运行功能,需要笔记本对象来运行这个功能
阶段二:想使用一个鼠标,又有一个功能使用鼠标,并多了一个鼠标对象。
阶段三:还想使用一个键盘 ,又要多一个功能和一个对象
问题:每多一个功能就需要在笔记本对象中定义一个方法,不爽,程序扩展性极差。
降低鼠标、键盘等外围设备和笔记本电脑的耦合性。
3.实现代码步骤
- 定义鼠标、键盘,笔记本三者之间应该遵守的规则
package cn.itcast.demo09; /* * 自定义的USB接口类 * 规范,就是抽象方法 * 开关 */ public interface USB { public abstract void open(); public abstract void close(); }
- 鼠标实现USB规则
package cn.itcast.demo09; /* * 自定义的鼠标类 * 满足USB接口规范 * 实现USB的接口,重写抽象方法 */ public class Mouse implements USB { public void open(){ System.out.println("开启鼠标"); } public void close(){ System.out.println("关闭鼠标"); } }
- 键盘实现USB规则
package cn.itcast.demo09; public class KeyBoard implements USB{ public void open(){ System.out.println("开启键盘"); } public void close(){ System.out.println("关闭键盘"); } }
- 定义笔记本
package cn.itcast.demo09; /* * 定义好的笔记本类 * 功能:开机,关机,使用USB设备 * */ public class Computer { public void openComputer(){ System.out.println("笔记本开机"); } public void closeComputer(){ System.out.println("笔记本关机"); } //使用USB设备方法,那个设备? //方法的参数,就是USB设备 public void useUSB(USB usb){ usb.open(); usb.close(); } }
- 测试类
package cn.itcast.demo09; public class Test { public static void main(String[] args) { //创建笔记本对象,调用笔记本的功能 Computer com = new Computer(); com.openComputer(); //调用笔记本使用USB设备的方法 //参数,是USB接口类型,接口不能建立对象 //调用方法,传递USB接口的实现类的对象 Mouse m = new Mouse(); com.useUSB(m); //使用USB设备,使用键盘 com.useUSB(new KeyBoard()); com.closeComputer(); } }
运行结果: