设计模式综合-会议管理系统的实现
(1)案例背景:
某会议管理系统的“会议通知发送”模块说明如下:
(1)行政管理人员可以给某个或者某些员工(Employee)发送会议通知,也可以给某个部门
(Department)发送通知,如果给某个部门发送通知,将逐个给该部门每个员工发送会议通知(2)如果员工或者部门希望能够收到会议通知,必须先注册到一个会议列表(MeetingList)中,在发送通知时,系统将遍历会议列表,逐个将会议通知发送给注册用户(User)
(2)实现步骤:
- 根据题意,选用合适的两种设计模式
- 根据这两种设计模式,画出本题的类图
- 根据类图,实现“会议通知发送”模块的代码(附加题,会根据实现情况加平时成绩)
- 设计模式的选用需要根据具体要求来进行
- 多种设计模式可以进行混合使用
(4)案例总结:
Ø 混合使用时,需要根据选用的不同设计模式,对类图进行修改
两种模式:组合模式,观察者模式
代码结构:
详细代码:
MyElement.java:
package notice.Element;public abstract class MyElement {public abstract void send();}
Employee.java:
package notice.Element;import notice.Observer.MyObserver;public class Employee extends MyElement implements MyObserver {public void send(){System.out.println("发送文件给员工!");}}
Department.java:
package notice.Element;import notice.Observer.MyObserver;import java.util.ArrayList;public class Department extends MyElement implements MyObserver {private ArrayList list = new ArrayList();public void add(MyElement element){list.add(element);}public void remove(MyElement element){list.remove(element);}public void send(){for (Object object:list){( (MyElement)object ).send();}}}
MySubject.java:
package notice.Observer;import java.util.ArrayList;public abstract class MySubject {public ArrayList meetingList = new ArrayList();public void attach(MyObserver observer){meetingList.add(observer);}public void detach(MyObserver observer){meetingList.remove(observer);}public abstract void regist();}
MyObserver.java:
package notice.Observer;public interface MyObserver {void send();}
User.java:
package notice.Observer;import notice.Element.Department;import notice.Element.Employee;import notice.Element.MyElement;public class User extends MySubject{public void regist(){MyElement emp1,emp2,emp3;Department dep1;emp1 = new Employee();emp2 = new Employee();emp3 = new Employee();dep1 = new Department();dep1.add(emp1);dep1.add(emp2);meetingList.add(emp3);meetingList.add(dep1);for (Object obs:meetingList){System.out.print("员工注册信息! ");((MyElement)obs).send();}}}
Client.java:
package notice.Client;import com.sun.org.apache.bcel.internal.generic.MONITORENTER;import notice.Element.Department;import notice.Element.Employee;import notice.Element.MyElement;import notice.Observer.MyObserver;import notice.Observer.MySubject;import notice.Observer.User;public class Client {public static void main(String[] args) {System.out.println("软件1904班 白旭君 2019005368");MySubject subject = new User();MyObserver obs1,obs2;obs1 = new Employee();obs2 = new Department();subject.attach(obs1);subject.attach(obs2);subject.regist();// MyElement emp1,emp2,emp3;// Department dep1,dep2;//// emp1 = new Employee();// emp2 = new Employee();// emp3 = new Employee();// dep1 = new Department();// dep2 = new Department();//// dep1.add(emp1);// dep1.add(emp2);//// dep2.add(dep1);// dep2.add(emp3);//// dep2.send();}}
实验结果:
设计模式综合-会议管理系统的实现相关推荐
- java-net-php-python-java智能会议管理系统计算机毕业设计程序
java-net-php-python-java智能会议管理系统计算机毕业设计程序 java-net-php-python-java智能会议管理系统计算机毕业设计程序 本源码技术栈: 项目架构:B/S ...
- 公司最实用的软件——综合办公管理系统
综合办公管理系统作为一款SaaS在线软件,主要包含:公文管理.个人事务.会议管理.日常办公.通知公告.通讯录.日程管理.文档管理.合同管理.在线交流管理.考勤管理.规章制度管理.印章管理.车辆管理.项 ...
- java会议管理系统_基于jsp的会议管理系统-JavaEE实现会议管理系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的会议管理系统, 该项目可用各类java课程设计大作业中, 会议管理系统的系统架构分为前后台两部分, 最终实现在线上 ...
- 基于JSP会议管理系统毕业设计
欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye2 一 绪论 1.1 本课题的开发背景及意义 当今社会竞争日益激烈,企事业单位内部会议也不断增多, ...
- 基于Spring等框架的会议管理系统
目录 1 系统简介 2 系统相关技术 2.1 开发工具 2.2 开发环境 2.3 服务器 3 系统分析 3.1 总体分析 3.2 需求分析 3.3 功能分析 4 系统设计 4.1 系统总体设计框架 4 ...
- 综合办公管理系统源码
OA+HR+CRM源码 综合办公管理系统源码 源码免费分享 本系统是一套强大的综合办公管理系统,为OA办公系统+HR人力资源管理系统+CRM客户关系管理系统集合而成,人员可以单点登入多个系统完成自己的 ...
- 综合布线管理系统之智能配线架的过去与将来
在综合布线管理系统中,智能配线架的使用已经越来越广泛了.电子配线架,即智能配线架,(编者注:下文简称"电配")发展到今天大概有十几年了.它的架构有哪些,连接方式分几种,实现检测的技 ...
- 2021信阳高中高考成绩查询,河南省普通高中综合信息管理系统2021信阳中考成绩查询入口...
河南省普通高中综合信息管理系统2021信阳中考成绩查询入口 河南省普通高中综合信息管理系统(http://gzgl.jyt.henan.gov.cn)是2021信阳中考官方网站,河南省高中阶段教育招生 ...
- 基于云平台的家居综合监测管理系统的设计与实现
时间过得飞快,转眼间大四即将毕业,有点留恋和不舍.可能是越是到了离别的时候,越开始珍惜吧.大一开始,通过考核进入了学校院系实验室开始学习,这期间自学了很多东西,很充实,也参加过很多比赛,也取得过一些名 ...
最新文章
- linux系统中安装java
- VC++动态链接库(DLL)编程(四)――MFC扩展 DLL
- Android 音视频开发学习思路
- Linux下安装oracle提示INS-20802 Oracle Net Configuration Assistant
- JavaScript(循环)
- 一文整理四六级考前必背知识点【精简版】
- 掌握这些!让Python不再从入门到放弃,初学者容易忽略的一些细节
- objc_setAssociatedObject 关联的简单用法
- AOP 中必须明白的概念-切面(Aspect)
- java getimage_Java ImageView.getImage方法代码示例
- jframe和mysql登陆_刚写的一个从数据库读取账户和密码进行登陆的小程序~高手请无~...
- 使用枚举完成学生类,性别的设置。
- snmp 获得硬件信息_计算机网络基础课程—简单网络管理协议(SNMP)
- [毕业生的商业软件开发之路]C#语法基础结构
- canvas需要gpu_【前端冷知识】你了解Canvas的渲染上下文吗?
- vscode设置背景图片
- 帆软Tab控件与控制组件隐藏的异同点
- sql常用语句整理(包括增删改查),适合小白使用
- 【电机测速】M法、T法、M/T法测速系统设计实现
- Pymol入门教程--基础