package sys;
import org.apache.log4j.Logger;
import user.Admin;
import user.Employee;
import user.User;
public class ControlSys {
private Door door = new Door();
private Computer computer = new Computer();
private InputDevice inputDevice = new InputDevice();
private Admin admin;
private Logger logger = Logger.getLogger(ControlSys.class);
public ControlSys(Admin admin)
{
this.admin = admin;
log("门禁系统启动");
}
//输入
public void input(Employee user)
{
log("员工(" + user.getName() + ")使用输入设备");
String input = inputDevice.getInput();
boolean checked = computer.check(input);
if (checked) {
log("员工(" + user.getName() + ")通过身份验证");
useDoor();
} else {
log("员工(" + user.getName() + ")身份验证失败");
}
}
//门铃
public void ring(User user)
{
log("客人(" + user.getName() + ")来访");
boolean allowed = admin.allowRing(user);
if (allowed) {
log("管理员(" + admin.getName() + ")允许来客通过");
useDoor();
} else {
log("管理员(" + admin.getName() + ")拒绝开门");
}
}
//
public void addValidData(String validData)
{
try {
computer.addData( validData );
log("管理员("+admin.getName()+")添加了新的验证数据");
} catch (Exception e) {
processException(e);
}
}
//使用门(开,5秒后关)
private void useDoor()
{
door.open();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
processException( e );
}
finally
{
door.close();
}
}
//记录日志
private void log(String message)
{
logger.info(message);
}
//处理异常
private void processException(Exception e)
{
logger.error(e);
e.printStackTrace();
}
}
一个理解面向对象很好的例子
需积分: 44 94 浏览量
2008-10-22
15:58:56
上传
评论
收藏 344KB RAR 举报
chennan0421
- 粉丝: 0
- 资源: 2
最新资源
- 采用P-f和Q-V滞控的去中心化逆变器型交流微电网的模拟(Simulink仿真实现)
- 彩虹聚合二级域名DNS管理系统源码v1.3
- 【TOF相机笔记3】Simulink使用方法
- 算法部署-基于C++和Python使用ONNXRuntime部署RT-DETR目标检测算法-附项目源码-优质项目实战.zip
- Bitree.cpp
- 改变浏览器大小,图片(img)内容居中显示
- 全景分割-基于FAIR-DETR对Cityscapes数据集进行微调实现全景分割-附项目源码-优质项目实战.zip
- Tru master.m4a
- 基于ELMAN神经网络的用气量预测,基于ELMAN的天然气消费量预测(代码完整,数据齐全)
- 基于Vue3+ThreeJS实现机械臂控制和预览+源码+开发文档+代码解析(高分优秀项目)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈