首页 软件体系结构与设计模式-命令模式

软件体系结构与设计模式-命令模式

举报
开通vip

软件体系结构与设计模式-命令模式《软件体系结构与设计模式》期末大作业 命令模式设计 班级: 学号: 姓名: 手机: 目录 一.应用场景与案例描述    3 二.案例分析与解决问题    3 三.各个角色描述与UML图示    4 四.程序完整源代码    5 1.接收者    5 2.命令接口    7 3.具体命令    8 4.请求者    11 5.系统    12 五.程序运行结果    15 1.首次运行后的初始界面    15 2.点击“打开摄像头”    15 3.点击“打开照明灯”    16 4.点击“关闭照明灯”    1...

软件体系结构与设计模式-命令模式
《软件体系结构与设计模式》期末大作业 命令模式设计 班级: 学号: 姓名: 手机: 目录 一.应用场景与案例描述    3 二.案例分析与解决问题    3 三.各个角色描述与UML图示    4 四.程序完整源代码    5 1.接收者    5 2.命令接口    7 3.具体命令    8 4.请求者    11 5.系统    12 五.程序运行结果    15 1.首次运行后的初始界面    15 2.点击“打开摄像头”    15 3.点击“打开照明灯”    16 4.点击“关闭照明灯”    16 5.点击“关闭摄像头”    17 一.应用场景与案例描述 随着社会经济和科学技术的飞速发展,特别是计算机网络的发展,人们对安全技术防范的要求也越来越高。然而,现如今快递、外卖行业的迅速发展,各类上门服务为人们带来便捷的同时也伴随着不少隐患。为了打击各种各样的经济刑事犯罪,保护自身的生命财产安全,采用高科技手段预防和制止各种犯罪将会成为安全防范领域的发展方向。由此,楼道监控系统应运而生。 计算机系统的应用、普及,网络通讯技术及图像压缩处理技术以及传输技术的快速发展,使得安全技术防范行业能够采用最新的计算机、通讯和图像处理技术,通过计算机网络传输数字图像,可为实现远程图像监控及联网报警系统提供高效可行而且价格低廉的解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。 二.案例分析与解决问题 由于楼道监控系统需要在不同的时刻指定执行请求,并需要提供撤销操作(开关功能),因此十分适合使用命令模式。 并且使用命令模式有以下几个优点:消除耦合、满足“开闭原则”、可以记录日志、能够顺序执行。 实现楼道监控系统的模拟,包括模拟出摄像头监控功能以及楼道照明功能,需要借助javax.swing包提供的组件并使用命令模式的思想加以实现。 将触发事件的组件封装在命令模式的Invoke类中,其关键技术是,让组件使用内部类的实例处理本身的事件,具体来说就是让内部类的实例负责执行命令模式中Invoke类中的excuteCommand()方法,这样一来,组件触发事件后将导致一个具体命令被执行。 三.各个角色描述与UML图示 四.程序完整源代码 1.接收者 Camera类中的on()方法可以打开cameraOpen图片,off()方法可以打开cameraClosed图片,以实现模拟功能,具体代码如下: Camera.java package CorridorMonitor; import javax.swing.*; public class Camera extends JPanel{ String name; Icon imageIcon; JLabel label; public Camera(){ label=new JLabel("模拟摄像头"); add(label); } public void on(){ label.setIcon(new ImageIcon("cameraOpen.jpg")); } public void off(){ label.setIcon(new ImageIcon("cameraClosed.jpg")); } } Light类中的on()方法可以打开lightOpen图片,off()方法可以打开lightClose图片,以实现模拟功能,具体代码如下: Light.java package CorridorMonitor; import javax.swing.*; public class Light extends JPanel{ String name; Icon imageIcon; JLabel label; public Light(){ label=new JLabel("模拟照明灯"); add(label); } public void on(){ label.setIcon(new ImageIcon("lightOpen.jpg")); } public void off(){ label.setIcon(new ImageIcon("lightClose.jpg")); } } 2.命令接口 命令接口包括excute()和getName()方法,代码如下: Command.java package CorridorMonitor; public interface Command { public abstract void execute(); public abstract String getName(); } 3.具体命令 OnCameraCommand类、OffCameraCommand类、OnLightCommand类以及OffLightCommand类创建了开关照明灯与摄像头的具体命令,代码如下: OnCameraCommand.java package CorridorMonitor; public class OnCameraCommand implements Command{ Camera camera; OnCameraCommand(Camera camera){ this.camera=camera; } public void execute(){ camera.on(); } public String getName(){ return "打开摄像头"; } } OffCameraCommanf.java package CorridorMonitor; public class OffCameraCommand implements Command{ Camera camera; OffCameraCommand(Camera camera){ this.camera=camera; } public void execute(){ camera.off(); } public String getName(){ return "关闭摄像头"; } } OnLightCommand.java package CorridorMonitor; public class OnLightCommand implements Command{ Light light; OnLightCommand(Light light){ this.light=light; } public void execute(){ light.on(); } public String getName(){ return "打开照明灯"; } } OffLightCommand.java package CorridorMonitor; public class OffLightCommand implements Command{ Light light; OffLightCommand(Light light){ this.light=light; } public void execute(){ light.off(); } public String getName(){ return "关闭照明灯"; } } 4.请求者 Invoke类中含有客户程序所需要的按钮,具体代码如下: Invoke.java package CorridorMonitor; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Invoke { JButton button; Command command; Invoke(){ button=new JButton(); button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ executeCommand(); } }); } public void setCommand(Command command){ this.command=command; button.setText(command.getName());; } public JButton getButton(){ return button; } private void executeCommand(){ command.execute(); } } 5.系统 下列应用程序中,Machine.java使用了命令模式中所涉及的类。窗体中显示四个独立的按钮,单击不同的按钮,完成特定的操作,以实现楼道监控系统的模拟。具体代码如下: Machine.java package CorridorMonitor; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Machine extends JFrame{ Invoke requestOnCamera,requestOffCamera,requestOnLight,requestOffLight; Camera camera; Light light; Machine(){ setTitle("楼道监控模拟"); requestOnCamera=new Invoke(); requestOffCamera=new Invoke(); camera=new Camera(); light=new Light(); requestOnCamera.setCommand(new OnCameraCommand(camera));
本文档为【软件体系结构与设计模式-命令模式】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_496339
暂无简介~
格式:doc
大小:28KB
软件:Word
页数:13
分类:互联网
上传时间:2019-01-17
浏览量:18