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

实验结果:

设计模式综合-会议管理系统的实现相关推荐

  1. java-net-php-python-java智能会议管理系统计算机毕业设计程序

    java-net-php-python-java智能会议管理系统计算机毕业设计程序 java-net-php-python-java智能会议管理系统计算机毕业设计程序 本源码技术栈: 项目架构:B/S ...

  2. 公司最实用的软件——综合办公管理系统

    综合办公管理系统作为一款SaaS在线软件,主要包含:公文管理.个人事务.会议管理.日常办公.通知公告.通讯录.日程管理.文档管理.合同管理.在线交流管理.考勤管理.规章制度管理.印章管理.车辆管理.项 ...

  3. java会议管理系统_基于jsp的会议管理系统-JavaEE实现会议管理系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的会议管理系统, 该项目可用各类java课程设计大作业中, 会议管理系统的系统架构分为前后台两部分, 最终实现在线上 ...

  4. 基于JSP会议管理系统毕业设计

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye2 一 绪论 1.1 本课题的开发背景及意义 当今社会竞争日益激烈,企事业单位内部会议也不断增多, ...

  5. 基于Spring等框架的会议管理系统

    目录 1 系统简介 2 系统相关技术 2.1 开发工具 2.2 开发环境 2.3 服务器 3 系统分析 3.1 总体分析 3.2 需求分析 3.3 功能分析 4 系统设计 4.1 系统总体设计框架 4 ...

  6. 综合办公管理系统源码

    OA+HR+CRM源码 综合办公管理系统源码 源码免费分享 本系统是一套强大的综合办公管理系统,为OA办公系统+HR人力资源管理系统+CRM客户关系管理系统集合而成,人员可以单点登入多个系统完成自己的 ...

  7. 综合布线管理系统之智能配线架的过去与将来

    在综合布线管理系统中,智能配线架的使用已经越来越广泛了.电子配线架,即智能配线架,(编者注:下文简称"电配")发展到今天大概有十几年了.它的架构有哪些,连接方式分几种,实现检测的技 ...

  8. 2021信阳高中高考成绩查询,河南省普通高中综合信息管理系统2021信阳中考成绩查询入口...

    河南省普通高中综合信息管理系统2021信阳中考成绩查询入口 河南省普通高中综合信息管理系统(http://gzgl.jyt.henan.gov.cn)是2021信阳中考官方网站,河南省高中阶段教育招生 ...

  9. 基于云平台的家居综合监测管理系统的设计与实现

    时间过得飞快,转眼间大四即将毕业,有点留恋和不舍.可能是越是到了离别的时候,越开始珍惜吧.大一开始,通过考核进入了学校院系实验室开始学习,这期间自学了很多东西,很充实,也参加过很多比赛,也取得过一些名 ...

最新文章

  1. linux系统中安装java
  2. VC++动态链接库(DLL)编程(四)――MFC扩展 DLL
  3. Android 音视频开发学习思路
  4. Linux下安装oracle提示INS-20802 Oracle Net Configuration Assistant
  5. JavaScript(循环)
  6. 一文整理四六级考前必背知识点【精简版】
  7. 掌握这些!让Python不再从入门到放弃,初学者容易忽略的一些细节
  8. objc_setAssociatedObject 关联的简单用法
  9. AOP 中必须明白的概念-切面(Aspect)
  10. java getimage_Java ImageView.getImage方法代码示例
  11. jframe和mysql登陆_刚写的一个从数据库读取账户和密码进行登陆的小程序~高手请无~...
  12. 使用枚举完成学生类,性别的设置。
  13. snmp 获得硬件信息_计算机网络基础课程—简单网络管理协议(SNMP)
  14. [毕业生的商业软件开发之路]C#语法基础结构
  15. canvas需要gpu_【前端冷知识】你了解Canvas的渲染上下文吗?
  16. vscode设置背景图片
  17. 帆软Tab控件与控制组件隐藏的异同点
  18. sql常用语句整理(包括增删改查),适合小白使用
  19. 【电机测速】M法、T法、M/T法测速系统设计实现
  20. Pymol入门教程--基础

热门文章

  1. python与爬虫入门演示
  2. 召开有效团队会议的7个技巧
  3. 一个外贸soho的生意经:逆向生意,正向赚钱
  4. c语言三角堆怎么打,教你方圆三角堆积四个面五个转解说
  5. 【Unity3D】Unity3D Mecanim动画系统骨骼动画问题解决方法
  6. origin 作图:如何将纵坐标转化为百分比形式
  7. 六种强大的姿态识别估计的深度学习模型和代码
  8. Centos7 Devstack [Rocky] 常见问题解决办法
  9. 基于MATLAB、Python科研数据可视化
  10. 名帖190 米芾 行书《多景楼诗册》