3.1 案例介绍
定义 USB 接口 (具备开启功能, 关闭功能), 笔记本要使用 USB 设备, 即笔记本在生产时需要预留可以插入 USB 设备的 USB 接口, 即就是笔记本具备使用 USB 设备的功能, 但具体是什么 USB 设备, 笔记本并不关心, 只要符合 USB 规格的设备都可以. 鼠标和键盘要想能在电脑上使用, 那么鼠标和键盘也必须遵守 USB 规范, 不然鼠标和键盘的生产出来无法使用
进行描述笔记本类, 实现笔记本使用 USB 鼠标, USB 键盘
USB 接口, 包含开启功能, 关闭功能
笔记本类, 包含运行功能, 关机功能, 使用 USB 设备功能
鼠标类, 要符合 USB 接口
键盘类, 要符合 USB 接口
3.2 案例需求分析
阶段一:
使用笔记本, 笔记本有运行功能, 需要笔记本对象来运行这个功能
阶段二:
想使用一个鼠标, 又有一个功能使用鼠标, 并多了一个鼠标对象.
阶段三:
还想使用一个键盘 , 又要多一个功能和一个对象
问题: 每多一个功能就需要在笔记本对象中定义一个方法, 不爽, 程序扩展性极差.
降低鼠标, 键盘等外围设备和笔记本电脑的耦合性.
3.3 实现代码步骤
定义鼠标, 键盘, 笔记本三者之间应该遵守的规则
- interface USB {
- void open();// 开启功能
- void close();// 关闭功能
- }
鼠标实现 USB 规则
- class Mouse implements USB {
- public void open() {
- System.out.println("鼠标开启");
- }
- public void close() {
- System.out.println("鼠标关闭");
- }
- }
键盘实现 USB 规则
- class KeyBoard implements USB {
- public void open() {
- System.out.println("键盘开启");
- }
- public void close() {
- System.out.println("键盘关闭");
- }
- }
定义笔记本
- class NoteBook {
- // 笔记本开启运行功能
- public void run() {
- System.out.println("笔记本运行");
- }
- // 笔记本使用 usb 设备, 这时当笔记本对象调用这个功能时, 必须给其传递一个符合 USB 规则的 USB 设备
- public void useUSB(USB usb) {
- // 判断是否有 USB 设备
- if (usb != null) {
- usb.open();
- usb.close();
- }
- }
- public void shutDown() {
- System.out.println("笔记本关闭");
- }
- }
- public class Test {
- public static void main(String[] args) {
- // 创建笔记本实体对象
- NoteBook nb = new NoteBook();
- // 笔记本开启
- nb.run();
- // 创建鼠标实体对象
- Mouse m = new Mouse();
- // 笔记本使用鼠标
- nb.useUSB(m);
- // 创建键盘实体对象
- KeyBoard kb = new KeyBoard();
- // 笔记本使用键盘
- nb.useUSB(kb);
- // 笔记本关闭
- nb.shutDown();
- }
- }
来源: http://www.bubuko.com/infodetail-2749074.html