组合,外观,迭代器模式案例实验报告.doc_第1页
组合,外观,迭代器模式案例实验报告.doc_第2页
组合,外观,迭代器模式案例实验报告.doc_第3页
组合,外观,迭代器模式案例实验报告.doc_第4页
组合,外观,迭代器模式案例实验报告.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件设计与体系结构实 验 报 告课程名称软件设计与体系结构课程编号0920116实验项目名称 组合,外观,迭代器模式案例学号班级姓名专业学生所在学院指导教师实验室名称地点实验时间 实验名称: 迭代器,外观,组合模式案例 实验目的:迭代器,外观,组合模式(Observer Pattern)是设计模式中行为模式的一种,它解决了上述具有一对多依赖关系的对象的重用问题。此模式的参与者分为两大类,一类是被观察的目标,另一类是观察该目标的观察者们。正因为该模式是基于“一对多”的关系,所以该模式一般是应用于由一个目标对象和N个观察者对象组成(当然也可以扩展为有多个目标对象,但我们现在只讨论前者)的场合。当目标对象的状态发生改变或做出某种行为时,正在观察该目标对象的观察者们将自动地、连锁地作出相应的响应行为。 通过本次实验了解观察者模式的原理。并能够运用观察者模式来进行编程。实验内容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(Enumeration 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.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.add(6);v.add(9);v.add(12);v.add(15);v.add(18);v.add(21);v.add(24);v.add(27);Enumeration 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();组合模式:package 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 FinanceDepartment 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 method stubString s=;for(int i=0;idepth;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 java.util.Collection;import java.util.Iterator;import java.util.List;import java.util.ListIterator;public class ConcreteCompany extends Company implements Serializableprivate List children;public ConcreteCompany(String s) super(s);children=new ArrayList();public void add(Company 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=;for(int i=0;idepth;i+)s=s+-;System.out.println(s+name);ListIterator i = children.listIterator();while(i.hasNext()i.next().display(depth+2);public void lineOfDuty() / TODO Auto-generated method stubIterator i=children.iterator();while(i.hasNext()i.next().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 stubOverridepublic void display(int depth) / TODO Auto-generated method stubString s=;for(int i=0;idepth;i+)s=s+-;System.out.println(s+name);Overridepublic void lineOfDuty() / TODO Auto-generated method stubSystem.out.println(name+ 负责员工招聘培训管理);package Combination;public class 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(华东分公司人力资源部);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 ConcreteCompany(杭州办事处);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() 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 (boolean 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 setTeaBagIsSteeped (boolean isTeaBagSteeped) teaBagIsSteeped = isTeaBagSteeped; public boolean getTeaBagIsSteeped () return teaBagIsSteeped; public void addFacadeTeaBag (TeaBag facadeTeaBagIn) facadeTeaBag = facadeTeaBagIn; System.out.println (茶包放在苶杯了); public void addFacadeWater (Water facadeWaterIn) facadeWater = facadeWaterIn; System.out.println (水倒入杯子了); public void steepTeaBag () if ( (facadeTeaBag != null) & ( (facadeWater != null) & (facadeWater.getWaterIsBoiling () System.out.println (茶渗透到杯子中); setTeaBagIsSteeped (true); else System.out.println (茶没有渗透到杯子中); setTeaBagIsSteeped (false); public String toString() if (this.getTeaBagIsSteeped() return (一杯又香又浓的茶冲好了!); else String tempString = new String (一个杯子); if (facadeWater != null) if (facadeWater.getWaterIsBoiling () tempString = (tempString + 放有沸腾的水 ); else tempString = (tempString + 放有冻水 ); else tempString = (tempString + 没有放水 ); if (facadeTeaBag != null) tempString = (tempString + 有一个茶包); else tempString = (tempString + 没有茶包); return tempString; public class FacadeCuppaMaker boolean 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 FacadeCuppaMaker (); TeaCup teaCup = cuppaMaker.makeACuppa (); System.ou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论