设计模式上级实验5-组合模式实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
青岛理工大学
课程实验报告
课程名称软件设计与体系结构班级软件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类继承ViewGroup
5.创建测试类
调试过程及
实验结果
总结 1.加深了对组合模式的理解。了解了组合模式的使用场景。组合模
式适用于树形结构。
2.安全的组合模式,抽象类只包含共有的方法。ViewGroup特有的方法需要自己实现。这样避免了子类实现过多不必要的方法。增加了安全性。
附录1.View类
public abstract class View {
public abstract void operation();
public abstract void onDraw();
}
2.button类
public class Button extends View {
@Override
public void operation() {
System.out.println("-----Button-->operation");
}
@Override
public void onDraw() {
// TODO Auto-generated method stub
System.out.println("-----Button-->onDraw");
}
}
3.textview类
public class TextView extends View{
@Override
public void operation() {
System.out.println("-----TextView-->operation");
}
@Override
public void onDraw() {
System.out.println("-----TextView-->onDraw");
}
}
4.ViewGroup类
public class ViewGroup extends View{
public ArrayList
public void operation() {
System.out.println("ViewGroup-->operation");
}
public void addView(View view){
viewList.add(view);
}
public void remove(View view){
viewList.remove(view);
}
public View getChildAt(int position){
return viewList.get(position);
}
public void onDraw() {
System.out.println("ViewGroup-->onDraw");
}
}
4.LinerLayout类
public class LinerLayout extends ViewGroup {
public void operation() {
System.out.println("*****LinerLayout-->operation");
for (View view : viewList) {
view.operation();
}
}
public void onDraw() {
System.out.println("*****LinerLayout-->onDraw");
for (View view : viewList) {
view.onDraw();
}
}
}
5.FrameLayout类
public class FrameLayout extends ViewGroup {
public void operation() {
System.out.println("*****FrameLayout-->operation");
for (View view : viewList) {
view.operation();
}
}
public void onDraw() {
System.out.println("*****FrameLayout-->onDraw");
for (View view : viewList) {
view.onDraw();
}
}
}