设计模式上级实验5-组合模式实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 viewList=new 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();

}

}

}

相关文档
最新文档