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();

}

}

转载于:https://www.cnblogs.com/Colaandcookie/p/9563264.html

第三章 笔记本电脑案例相关推荐

  1. Google Web App开发指南第三章:案例研究

    旅程计划应用(Wayfindit: Trip Planner App) 在大多数情况下,Wayfindit的应用必须有很好的易用性.旅行是一件很复杂的事情,不管是商业旅行还是休假旅行,一个顺利的旅程要 ...

  2. 以文件服务器为中央结点,电子商务概论案例第三章资料.ppt

    电子商务概论案例第三章资料.ppt 第3章 电子商务相关技术 本章学习目标 计算机网络技术 互联网基础知识 Web应用技术 EDI技术 案例三 3.1计算机网络技术 3.1.1 计算机网络概述 3.1 ...

  3. Hadoop快速入门——第三章、MapReduce案例(字符统计)

    Hadoop快速入门--第三章.MapReduce案例 目录 环境要求: 1.项目创建: 2.修改Maven 3.编码 4.本地文件测试 5.修改[Action]文件(修改测试文件路径) 6.导出ja ...

  4. 第三章--数据链路层

    第三章--数据链路层 本章目录: 3.1使用点对点信道的数据链路层 3.1.1数据链路和帧 3.1.2三个基本问题 3.2点对点协议PPP 3.2.1PPP协议的特点 3.2.2PPP协议的帧格式 3 ...

  5. 高可用高性能负载均衡软件HAproxy详解指南-第三章:HAproxy实例

    目录 haproxy案例1:定义独立日志文件 haproxy案例2:haproxy统计页面的输出机制 haproxy案例3:动静分离示例: haproxy案例4:实现web负载 haproxy案例5: ...

  6. 鸟哥的Linux私房菜(基础篇)-第三章、主机规划与磁盘分区(三.3. 安装Linux前的规划)

    第三章.主机规划与磁盘分区 最近升级日期:2009/08/06 3. 安装Linux前的规划 3.1 选择适当的distribution 3.2 主机的服务规划与硬件的关系 3.3 主机硬盘的主要规划 ...

  7. 鸟哥的Linux私房菜(基础篇)-第三章、主机规划与磁盘分区(三.1. Linux与硬件的搭配)

    第三章.主机规划与磁盘分区 最近升级日期:2009/08/06 1. Linux与硬件的搭配 1.1 认识计算机的硬件配备 1.2 选择与Linux搭配的主机配备: 硬件支持相关网站 1.3 各硬件装 ...

  8. 第二、三章:信息系统项目管理基础与立项管理-章节真题

    一.单选题 1.( )不是项目目标特性. A.多目标性 B.优先性 C.独特性 D.层次性 2.某公司的组织结构如下图所示,( )不属于该组织结构类型的缺点 A.部门之间横向联系较少,不利于沟通.技术 ...

  9. ASP.NET Core 中文文档 第三章 原理(5)错误处理

    原文:Error Handling 作者:Steve Smith 翻译:谢炀(Kiler) 校对:高嵩(jack2gs).何镇汐 当你的ASP.NET应用发生错误的时候, 你可以采用本文所述的各种方法 ...

最新文章

  1. matlab 基于 libsvm工具箱的svm分类遇到的问题与解决
  2. Windows10家庭版安装Hyper-V虚拟机
  3. TCP三次握手和四次挥手图示
  4. Google研究员Ilya Sutskever:成功训练LDNN的13点建议
  5. Python notes
  6. Python3 爬虫学习笔记 C18【爬虫框架 pyspider — 深入理解】
  7. require.js的笔记
  8. Java排序之归并排序
  9. HEVC---CompressCU 函数解析
  10. Master of Typing - Tutor for Mac(打字大师—盲打练习课程)
  11. 金蝶K3老单据下推老单据并修改字段名(以销售订单下推销售出库单为例,后台操作部分)
  12. 利用科学计算机转换角度,角度换算计算器(角度换算弧度计算器)
  13. 杰理AC632N蓝牙芯片iokey使用解析(通用MCU版)
  14. Python3简单的爬虫项目 爬取虎牙主播名字 人气
  15. Ambarella SDK build 步骤解析
  16. 【kali】kali2020.2安装 超级详细教程
  17. android recovery 和reboot
  18. 基音周期计算(pitch tracking)
  19. 大学生选课抢课如何提高选中概率
  20. python开发office插件_看完这篇Python操作PPT总结,从此使用Python玩转Office全家桶就没有压力了!...

热门文章

  1. 指针数组、数组指针、数组的区别与联系
  2. IAR中断定义#pragma vector = P0INT_VECTOR __interrupt void P0_ISR(void)啥意思?
  3. CSS 中功能相似伪类间的区别
  4. zTree新增的根结点再新增子节点reAsyncChildNodes不生效解决方案
  5. 开发者需要了解的WebKit
  6. 构建之法之单元测试及设计流程
  7. linux安装和配置 mysql、redis 过程中遇到的问题记录(转)
  8. 使用PowerShell收集客户端MAC地址
  9. 给Xshell设置舒适的配色方案
  10. 对硬连接与软件连接的理解