




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 软件设计与体系结构实 验 报 告课程名称软件设计与体系结构课程编号0920116实验项目名称 组合,外观,迭代器模式案例学号班级姓名专业学生所在学院指导教师实验室名称地点实验时间 实验名称: 迭代器,外观,组合模式案例 实验目的:迭代器,外观,组合模式(Observer Pattern)是设计模式中行为模式的一种,它解决了上述具有一对多依赖关系的对象的重用问题。此模式的参与者分为两大类,一类是被观察的目标,另一类是观察该目标的观察者们。正因为该模式是基于“一对多”的关系,所以该模式一般是应用于由一个目标对象和N个观察者对象组成(当然也可以扩展为有多个目标对象,但我们现在只讨论前者)的场合。当
2、目标对象的状态发生改变或做出某种行为时,正在观察该目标对象的观察者们将自动地、连锁地作出相应的响应行为。 通过本次实验了解观察者模式的原理。并能够运用观察者模式来进行编程。实验内容1 UML类图迭代器模式:组合模式:外观模式冲茶2 程序的源代码 迭代器: package Iterator;import java.util.Enumeration;public class MyEnumeration private Enumeration me;private int step;public Enumeration getMe() return me;public void setMe(Enum
3、eration me) this.me = me;public int getStep() return step;public void setStep(int step) this.step = step;public MyEnumeration(Enumeration e) me = e;public void traverse() while (me.hasMoreElements() System.out.println(me.nextElement();public void jumptraverse() while (me.hasMoreElements() System.out
4、.println(me.nextElement();for (int i = 1; i < step; i+) if (me.hasMoreElements()me.nextElement();package Iterator;import java.util.Enumeration;import java.util.Vector;public class Test public static void main(String args) / TODO Auto-generated method stubVector v =new Vector<>();v.add(3);v.
5、add(6);v.add(9);v.add(12);v.add(15);v.add(18);v.add(21);v.add(24);v.add(27);Enumeration<Vector> e=v.elements();MyEnumeration m=new MyEnumeration(e);System.out.println("normal traverse:");/m.traverse();m.setStep(3);System.out.println("jump traverse:");m.jumptraverse();组合模式:p
6、ackage Combination;public abstract class Company protected String name;public Company(String s)name=s;public abstract void add(Company c);public abstract void remove(Company c);public abstract void display(int depth);public abstract void lineOfDuty();package Combination;public class FinanceDepartmen
7、t extends Company public FinanceDepartment(String s) super(s);/ TODO Auto-generated constructor stubOverridepublic void add(Company c) / TODO Auto-generated method stubOverridepublic void remove(Company c) / TODO Auto-generated method stubOverridepublic void display(int depth) / TODO Auto-generated
8、method stubString s=""for(int i=0;i<depth;i+)s=s+'-'System.out.println(s+name);Overridepublic void lineOfDuty() / TODO Auto-generated method stubSystem.out.println(name+" 负责管理公司财务收支");package Combination;import java.io.Serializable;import java.util.ArrayList;import jav
9、a.util.Collection;import java.util.Iterator;import java.util.List;import java.util.ListIterator;public class ConcreteCompany extends Company implements Serializableprivate List<Company> children;public ConcreteCompany(String s) super(s);children=new ArrayList<Company>();public void add(C
10、ompany c) / TOO Auto-generated method stubtrychildren.add(c);catch(Exception e)if(children=null)System.out.println("cccc=null");public void remove(Company c) / TODO Auto-generated method stubchildren.remove(c);public void display(int depth) / TODO Auto-generated method stubString s="&
11、quot;for(int i=0;i<depth;i+)s=s+'-'System.out.println(s+name);ListIterator<Company> i = children.listIterator();while(i.hasNext()i.next().display(depth+2);public void lineOfDuty() / TODO Auto-generated method stubIterator<Company> i=children.iterator();while(i.hasNext()i.next(
12、).lineOfDuty();package Combination;public class HRdepartment extends Company public HRdepartment(String s) super(s);/ TODO Auto-generated constructor stubOverridepublic void add(Company c) / TODO Auto-generated method stubOverridepublic void remove(Company c) / TODO Auto-generated method stubOverrid
13、epublic void display(int depth) / TODO Auto-generated method stubString s=""for(int i=0;i<depth;i+)s=s+'-'System.out.println(s+name);Overridepublic void lineOfDuty() / TODO Auto-generated method stubSystem.out.println(name+" 负责员工招聘培训管理");package Combination;public clas
14、s Test public static void main(String args) ConcreteCompany root=new ConcreteCompany("北京总公司");root.add(new HRdepartment("总公司人力资源部");root.add(new FinanceDepartment("总公司财务部");ConcreteCompany comp=new ConcreteCompany("上海华东分公司");comp.add(new HRdepartment("华东分
15、公司人力资源部");comp.add(new FinanceDepartment("华东分公司财务部");root.add(comp);ConcreteCompany comp1=new ConcreteCompany("南京办事处");comp1.add(new HRdepartment("南京办事处人力资源部");comp1.add(new FinanceDepartment("南京办事处财务部");comp.add(comp1);ConcreteCompany comp2=new ConcreteC
16、ompany("杭州办事处");comp2.add(new HRdepartment("杭州办事处人力资源部");comp2.add(new FinanceDepartment("杭州办事处财务部");comp.add(comp2);System.out.println("公司结构图");root.display(1);System.out.println("各部门职责");root.lineOfDuty();外观模式冲茶:public class TeaBag public TeaBag()
17、System.out.println("清香的茶包准备好了"); public class Water boolean waterIsBoiling; public Water () setWaterIsBoiling (false); System.out.println ("纯净的水准备好了"); public void boilFacadeWater () setWaterIsBoiling (true); System.out.println ("水在沸腾"); public void setWaterIsBoiling (b
18、oolean isWaterBoiling) waterIsBoiling = isWaterBoiling; public boolean getWaterIsBoiling () return waterIsBoiling; public class TeaCup boolean teaBagIsSteeped; Water facadeWater; TeaBag facadeTeaBag; public TeaCup () setTeaBagIsSteeped (false); System.out.println ("茶杯准备好了"); public void se
19、tTeaBagIsSteeped (boolean isTeaBagSteeped) teaBagIsSteeped = isTeaBagSteeped; public boolean getTeaBagIsSteeped () return teaBagIsSteeped; public void addFacadeTeaBag (TeaBag facadeTeaBagIn) facadeTeaBag = facadeTeaBagIn; System.out.println ("茶包放在苶杯了"); public void addFacadeWater (Water fa
20、cadeWaterIn) facadeWater = facadeWaterIn; System.out.println ("水倒入杯子了"); public void steepTeaBag () if ( (facadeTeaBag != null) && ( (facadeWater != null) && (facadeWater.getWaterIsBoiling () System.out.println ("茶渗透到杯子中"); setTeaBagIsSteeped (true); else System.o
21、ut.println ("茶没有渗透到杯子中"); setTeaBagIsSteeped (false); public String toString() if (this.getTeaBagIsSteeped() return ("一杯又香又浓的茶冲好了!"); else String tempString = new String ("一个杯子"); if (facadeWater != null) if (facadeWater.getWaterIsBoiling () tempString = (tempString + &
22、quot;放有沸腾的水 "); else tempString = (tempString + "放有冻水 "); else tempString = (tempString + "没有放水 "); if (facadeTeaBag != null) tempString = (tempString + "有一个茶包"); else tempString = (tempString + "没有茶包"); return tempString; public class FacadeCuppaMaker bo
23、olean teaBagIsSteeped; public FacadeCuppaMaker() System.out.println("FacadeCuppaMaker 准备可以为你冲茶了!"); public TeaCup makeACuppa() TeaCup cup = new TeaCup(); TeaBag teaBag = new TeaBag(); Water water = new Water(); cup.addFacadeTeaBag(teaBag); water.boilFacadeWater(); cup.addFacadeWater(water); cup.steepTeaBag(); return cup; public class Client public static void main (String args) FacadeCuppaMaker cuppaMaker = new FacadeCuppaMa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 业务案例分析方法试题及答案
- 2024年小自考汉语言文学学习中的交流与合作策略试题及答案
- 2024年CPBA考试复习计划试题及答案
- 系统分析师考试成果转化能力试题及答案
- 秘书证考试解题技巧与试题及答案
- 理论与实践结合的系统分析师试题及答案
- 饮食安全演讲稿作文(8篇下载)
- 小学生春游策划方案10篇
- 2025年P2P金融合作协议书
- 土地储备的市场需求分析
- 短暂性脑缺血发作
- 20222023银行招聘考试题库1000题第4372期含答案解析
- 传染病报告卡
- 无缝气瓶检验作业指导书2024
- 国画基础知识题库单选题100道及答案解析
- DB34T 577-2021 葡萄炭疽病测报调查规范
- 区域地理之中国地理西北地区
- 部编小学语文单元整体作业设计二年级上册第五单元
- 钢铁项目环评报告 - 6地下水环境影响评价
- 港口液体危化品装卸管理人员理论考试题库-上(单选题)
- 元气寿司公关传播亮点及年度规划策划方案
评论
0/150
提交评论