科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Composite模式及其在JSF中的应用

Composite模式及其在JSF中的应用

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

1.composite模式意在组成任意复杂度的整体--部分组件层次结构,同时将单个组件或复合组件视为统一的接口。树形组织结构就是其中一种表现形式。

作者:中国IT实验室 来源:中国IT实验室 2007年8月26日

关键字: JSF Composite模式

  • 评论
  • 分享微博
  • 分享邮件
一 学习背景

   在学习关于JSF组件时涉及到了composite模式,于是就查看一些资料,以下是自己对这种模式的理解。

二  自己整理的一些资料(见参考资料)

1.composite模式意在组成任意复杂度的整体--部分组件层次结构,同时将单个组件或复合组件视为统一的接口。树形组织结构就是其中一种表现形式。

树形结构中有叶子结点和非叶子结点(根结点是特例),非叶子结点可以添加,删除(add(),delete())子结点,获取子结点(getChild()),叶子结点没有;此外树结构的所有节点还有共同的操作(operator()).
用户界面通常由两种基本类型的组件构造:基本组件和容器组件,容器组件可以在其内部嵌套任意数目的组件,而基本组件则不行。使用这两种组件类型,开发者可以建立更强大的组件,进而创建多姿多彩的用户界面。
但是在与复杂的组件层次结构打交道时,必须在容器组件和基本组件之间进行区分,比较麻烦,composite提供了一种解决方案。适用它的情况:
a. 要表现“部分-整体”的层次结构时
b. 希望在事件组件层次中,同等对待复合组件与单个组件。

2. 通过下面的示例来理解
示例1: 
基类shape 类有两个派生类Circle和Square(相当于叶子结点或者是单个组件),第三个派生类CompositeShape是个组合体(相当于非叶子结点或者是容器组件),它持有一个含有多个shape实例的列表,当调用CompositeShape中的draw()时,它就把这个方法委托给列表中的每一个实例。
 
对于系统而言,一个CompositeShape实例就像是一个独立的shape,可以把它传给使用shape的方法或者对象。实际上,它只是一组shape实例的proxy.
程序:
  1. Shape.java:
  2. Public interface Shape {
  3.     Public void draw();
  4. }
  5. CompositeShape.java:
  6. [code]Public class CompositeShape implements Shape {
  7.   private Vector Comshape = new Vector();
  8.   public void add(Shape shape) {
  9.     Comshape.add(shape);
  10.   }
  11.   Public void draw() {
  12.     forint i = 0; i < comshape.size(); i ++ ) {
  13.        Shape shape = (Shape) comshape.elementAt(i);
  14.        Shape.draw();
  15.     }
  16.   }
  17. }

示例2: 
抽象类Equipment就是Component定义,代表着组合体类的对象们,Equipment中定义几个共同的方法。
  1. package com.interf;
  2. public abstract class Equipment {
  3.     private String name;
  4.     private double netPrice;
  5.     private double discountPrice;
  6.     
  7.     public Equipment(String name) {
  8.         this.name = name;
  9.     }
  10.     public abstract double netPrice();
  11.     public abstract double discountPrice();
  12. }
查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章