ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:459.84KB ,
资源ID:6503411      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6503411.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(软件体系结构与设计模式命令模式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、软件体系结构与设计模式命令模式软件体系结构与设计模式期末大作业 命令模式设计班级:学号:姓名:手机:目录一应用场景与案例描述 3二案例分析与解决问题 3三各个角色描述与UML图示 4四程序完整源代码 51.接收者 52.命令接口 73.具体命令 84.请求者 115.系统 12五程序运行结果 151.首次运行后的初始界面 152.点击“打开摄像头” 153.点击“打开照明灯” 164.点击“关闭照明灯” 165.点击“关闭摄像头” 17一应用场景与案例描述随着社会经济和科学技术的飞速发展,特别是计算机网络的发展,人们对安全技术防范的要求也越来越高。然而,现如今快递、外卖行业的迅速发展,各类上门

2、服务为人们带来便捷的同时也伴随着不少隐患。为了打击各种各样的经济刑事犯罪,保护自身的生命财产安全,采用高科技手段预防和制止各种犯罪将会成为安全防范领域的发展方向。由此,楼道监控系统应运而生。计算机系统的应用、普及,网络通讯技术及图像压缩处理技术以及传输技术的快速发展,使得安全技术防范行业能够采用最新的计算机、通讯和图像处理技术,通过计算机网络传输数字图像,可为实现远程图像监控及联网报警系统提供高效可行而且价格低廉的解决方案。二案例分析与解决问题由于楼道监控系统需要在不同的时刻指定执行请求,并需要提供撤销操作(开关功能),因此十分适合使用命令模式。并且使用命令模式有以下几个优点:消除耦合、满足“

3、开闭原则”、可以记录日志、能够顺序执行。实现楼道监控系统的模拟,包括模拟出摄像头监控功能以及楼道照明功能,需要借助javax.swing包提供的组件并使用命令模式的思想加以实现。将触发事件的组件封装在命令模式的Invoke类中,其关键技术是,让组件使用内部类的实例处理本身的事件,具体来说就是让内部类的实例负责执行命令模式中Invoke类中的excuteCommand()方法,这样一来,组件触发事件后将导致一个具体命令被执行。三各个角色描述与UML图示四程序完整源代码1.接收者Camera类中的on()方法可以打开cameraOpen图片,off()方法可以打开cameraClosed图片,以实

4、现模拟功能,具体代码如下:Camera.javapackage 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 Im

5、ageIcon(cameraClosed.jpg); Light类中的on()方法可以打开lightOpen图片,off()方法可以打开lightClose图片,以实现模拟功能,具体代码如下:Light.javapackage 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() lab

6、el.setIcon(new ImageIcon(lightOpen.jpg); public void off() label.setIcon(new ImageIcon(lightClose.jpg); 2.命令接口命令接口包括excute()和getName()方法,代码如下:Command.javapackage CorridorMonitor;public interface Command public abstract void execute(); public abstract String getName();3.具体命令OnCameraCommand类、OffCamera

7、Command类、OnLightCommand类以及OffLightCommand类创建了开关照明灯与摄像头的具体命令,代码如下:OnCameraCommand.javapackage CorridorMonitor;public class OnCameraCommand implements Command Camera camera; OnCameraCommand(Camera camera) this.camera=camera; public void execute() camera.on(); public String getName() return 打开摄像头; OffC

8、ameraCommanf.javapackage CorridorMonitor;public class OffCameraCommand implements Command Camera camera; OffCameraCommand(Camera camera) this.camera=camera; public void execute() camera.off(); public String getName() return 关闭摄像头; OnLightCommand.javapackage CorridorMonitor;public class OnLightComman

9、d implements Command Light light; OnLightCommand(Light light) this.light=light; public void execute() light.on(); public String getName() return 打开照明灯; OffLightCommand.javapackage CorridorMonitor;public class OffLightCommand implements Command Light light; OffLightCommand(Light light) this.light=lig

10、ht; public void execute() light.off(); public String getName() return 关闭照明灯; 4.请求者Invoke类中含有客户程序所需要的按钮,具体代码如下:Invoke.javapackage CorridorMonitor;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Invoke JButton button; Command command; Invoke() button=new JButton(); button.a

11、ddActionListener(new ActionListener() public void actionPerformed(ActionEvent e) executeCommand(); ); public void setCommand(Command command) mand=command; button.setText(command.getName(); public JButton getButton() return button; private void executeCommand() command.execute(); 5.系统下列应用程序中,Machine

12、.java使用了命令模式中所涉及的类。窗体中显示四个独立的按钮,单击不同的按钮,完成特定的操作,以实现楼道监控系统的模拟。具体代码如下:Machine.javapackage CorridorMonitor;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Machine extends JFrame Invoke requestOnCamera,requestOffCamera,requestOnLight,requestOffLight; Camera camera; Light ligh

13、t; Machine() setTitle(楼道监控模拟); requestOnCamera=new Invoke(); requestOffCamera=new Invoke(); camera=new Camera(); light=new Light(); requestOnCamera.setCommand(new OnCameraCommand(camera); requestOffCamera.setCommand(new OffCameraCommand(camera); requestOnLight=new Invoke(); requestOffLight=new Invok

14、e(); requestOnLight.setCommand(new OnLightCommand(light); requestOffLight.setCommand(new OffLightCommand(light); initPosition(); setSize(200,300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); private void initPosition() JPanel pSouth=new JPanel(); pSouth.add(requestOnCamera.getB

15、utton(); pSouth.add(requestOffCamera.getButton(); pSouth.add(requestOnLight.getButton(); pSouth.add(requestOffLight.getButton(); add(pSouth,BorderLayout.SOUTH); JPanel pNorth=new JPanel(); pNorth.add(light); add(pNorth,BorderLayout.NORTH); JPanel pCenter=new JPanel(); pCenter.setBackground(Color.yellow); pCenter.add(camera); add(pCenter,BorderLayout.CENTER); public static void main(String args) Machine machine=new Machine(); 五程序运行结果1.首次运行后的初始界面2.点击“打开摄像头”3.点击“打开照明灯”4.点击“关闭照明灯”5.点击“关闭摄像头”

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1