1青岛理工大学课程实验报告课程名称软件设计与体系结构班级软件132实验日期2016.05.20姓名孙玉东学号201307217实验成绩实验名称组合模式实验实验目的及要求(1)熟悉组合模式的核心思想;(2)掌握组合模式的实现方法。实验环境Win7,VS2010实验内容1.模拟实现Android的视图树结构将对象View和ViewGroup组合成树形结构以表示部分-整体的层次结构;组合模式使得用户对单个对象View和组合对象ViewGroup的使用具有一致性。2.参考类图如下:算法描述及实验步骤1.创建View类,定义公共方法2.创建Button类继承view类并实现方法3.创建ViewGroup类继承view类,实现方法。且列中保存View集合4.创建Liner'Layout类继承ViewGroup5.创建测试类调试过程及实验结果总结1.加深了对组合模式的理解。了解了组合模式的使用场景。组合模2式适用于树形结构。2.安全的组合模式,抽象类只包含共有的方法。ViewGroup特有的方法需要自己实现。这样避免了子类实现过多不必要的方法。增加了安全性。附录1.View类publicabstractclassView{publicabstractvoidoperation();publicabstractvoidonDraw();}2.button类publicclassButtonextendsView{@Overridepublicvoidoperation(){System.out.println(-----Button--operation);}@OverridepublicvoidonDraw(){//TODOAuto-generatedmethodstubSystem.out.println(-----Button--onDraw);}}3.textview类publicclassTextViewextendsView{@Overridepublicvoidoperation(){System.out.println(-----TextView--operation);}@OverridepublicvoidonDraw(){System.out.println(-----TextView--onDraw);}}4.ViewGroup类publicclassViewGroupextendsView{publicArrayListViewviewList=newArrayListView();publicvoidoperation(){System.out.println(ViewGroup--operation);}publicvoidaddView(Viewview){viewList.add(view);3}publicvoidremove(Viewview){viewList.remove(view);}publicViewgetChildAt(intposition){returnviewList.get(position);}publicvoidonDraw(){System.out.println(ViewGroup--onDraw);}}4.LinerLayout类publicclassLinerLayoutextendsViewGroup{publicvoidoperation(){System.out.println(*****LinerLayout--operation);for(Viewview:viewList){view.operation();}}publicvoidonDraw(){System.out.println(*****LinerLayout--onDraw);for(Viewview:viewList){view.onDraw();}}}5.FrameLayout类publicclassFrameLayoutextendsViewGroup{publicvoidoperation(){System.out.println(*****FrameLayout--operation);for(Viewview:viewList){view.operation();}}publicvoidonDraw(){System.out.println(*****FrameLayout--onDraw);for(Viewview:viewList){view.onDraw();}}}