`
hanlingbo2008
  • 浏览: 80217 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

14.1、安全合成模式和透明合成模式

阅读更多

安全合成模式代码:

public interface Component {
    Composite getComposite();

    void sampleOperation();
}

 

public class Leaf implements Component {
    public Composite getComposite(){
        // Write your code here
        return null;
    }

    public void sampleOperation(){
        // Write your code here
    }
}

 

public class Composite implements Component {
    public Composite getComposite(){
            return this;
        }

    public void sampleOperation(){
        java.util.Enumeration enumeration = components();
        while (enumeration.hasMoreElements()) {
            ((Component)enumeration.nextElement()).sampleOperation();
        }
    }

    public void add(Component component){
            componentVector.addElement(component);
        }

    public void remove(Component component){
            componentVector.removeElement(component);
        }

    public Enumeration components(){
            return componentVector.elements();
        }

    /**
     * @associates <{Component}>
     * @link aggregation 
     * @supplierCardinality 0..*
     */
    private Vector componentVector = new java.util.Vector();
}

 透明合成模式代码:

import java.util.Enumeration;
public interface Component
{
    void sampleOperation();

    Composite getComposite();

    void add(Component component);

    void remove(Component component);

    Enumeration components();
}

 

import java.util.Enumeration;
import java.util.Vector;

public class Leaf implements Component
{
    public void sampleOperation()
    {
        // Write your code here
    }

    public void add(Component component)
    {
        componentVector.addElement(component);
    }

    public void remove(Component component)
    {
        componentVector.removeElement(component);
    }

    public Composite getComposite()
    {
        // Write your code here
        return null;
    }

    public Enumeration components()
    {
        // Write your code here
        return null;
    }

    /**
     * @associates <{Component}>
     * @link aggregation 
     * @supplierCardinality 0..*
     */
    private Vector componentVector = new java.util.Vector();
}

 

import java.util.Vector;
import java.util.Enumeration;

public class Composite implements Component
{
    public Composite getComposite()
    {
        return this;
    }

    public void sampleOperation()
    {
        java.util.Enumeration enumeration = components();
        while (enumeration.hasMoreElements())
        {
            ((Component)enumeration.nextElement()).sampleOperation();
        }
    }

    public void add(Component component)
    {
        componentVector.addElement(component);
    }

    public void remove(Component component)
    {
        componentVector.removeElement(component);
    }

    public Enumeration components()
    {
        return componentVector.elements();
    }

    /**
     * @associates <{Component}>
     * @link aggregation 
     * @supplierCardinality 0..*
     */
    private Vector componentVector = new java.util.Vector();
}

 

 

分享到:
评论

相关推荐

    WPF编程宝典 part1

    8.1.3 绑定模式 203 8.1.4 使用代码创建绑定 205 8.1.5 使用代码检索绑定 206 8.1.6 多绑定 207 8.1.7 绑定更新 210 8.1.8 绑定延迟 211 8.2 绑定到非元素对象 211 8.2.1 Source属性 212 8.2.2 RelativeSource属性 ...

    WPF编程宝典 part2

    8.1.3 绑定模式 203 8.1.4 使用代码创建绑定 205 8.1.5 使用代码检索绑定 206 8.1.6 多绑定 207 8.1.7 绑定更新 210 8.1.8 绑定延迟 211 8.2 绑定到非元素对象 211 8.2.1 Source属性 212 8.2.2 RelativeSource属性 ...

    Visual C++2010开发权威指南(共三部分).part1.rar

    1.8.6 安全数据类型 22 1.8.7 移动构造 23 1.9 支持开发并行程序 26 1.9.1 运行库支持native代码 26 1.9.2 调试和分析工具 29 1.10 对MFC的增强 31 1.10.1 任务对话框CTaskDialog 31 1.10.2 重启管理器(Restart ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例206 弹出全屏显示的网页模式对话框 261 实例207 关闭IE主窗口时不弹出询问对话框 262 实例208 弹出提示对话框并重定向网页 263 实例209 自动关闭的广告窗口 264 实例210 在弹出的对话框中选择个性头像 265 实例...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例206 弹出全屏显示的网页模式对话框 261 实例207 关闭IE主窗口时不弹出询问对话框 262 实例208 弹出提示对话框并重定向网页 263 实例209 自动关闭的广告窗口 264 实例210 在弹出的对话框中选择个性头像 265 实例...

    Visual C++程序开发范例宝典(光盘) 第四部分

    实例177 检测系统启动模式 实例178 内存使用状态 实例179 监视剪贴板内容 实例180 利用钩子技术实现键盘监控 6.6 程序相关设置 实例181 用列表显示系统正在运行的程序 实例182 为程序添加快捷方式 实例183 ...

    Visual C++程序开发范例宝典(光盘) 第八部分

    实例177 检测系统启动模式 实例178 内存使用状态 实例179 监视剪贴板内容 实例180 利用钩子技术实现键盘监控 6.6 程序相关设置 实例181 用列表显示系统正在运行的程序 实例182 为程序添加快捷方式 实例183 ...

    Visual C++程序开发范例宝典(PDF扫描版).part3

     cc实例177 检测系统启动模式   cc实例178 内存使用状态   cc实例179 监视剪贴板内容   cc实例180 利用钩子技术实现键盘监控   6.6 程序相关设置   cc实例181 用列表显示系统正在运行的程序   cc...

    Visual C++程序开发范例宝典(PDF扫描版).part2

     cc实例177 检测系统启动模式   cc实例178 内存使用状态   cc实例179 监视剪贴板内容   cc实例180 利用钩子技术实现键盘监控   6.6 程序相关设置   cc实例181 用列表显示系统正在运行的程序   cc...

    Visual C++ 程序开发范例宝典 源码 光盘 part2

    6.4 系统相关设置 cc实例173 获得Windows和System的路径 cc实例174 控制光驱的弹开与关闭 cc实例175 启动控制面板 cc实例176 为程序添加快捷键 6.5 系统监控 cc实例177 检测系统启动模式 cc实例178 ...

    Java开发技术大全 电子版

    14.1GUI程序设计的基本概念436 14.1.1组件437 14.1.2布局管理437 14.1.3事件处理437 14.2开发工具Eclipse简介438 14.2.1Eclipse的安装与配置438 14.2.2用Eclipse创建一个项目440 14.3AWT组件简介444 14.3.1...

Global site tag (gtag.js) - Google Analytics