- 浏览: 18298 次
- 性别:
- 来自: 西安
最新评论
Composite Pattern:意图是将对象组合成树形结构以表示部分-整体的层次结构,它使得用户对单个对象和组合对象的使用具有一致性。
下面以Iterator中的例子为例,不过,这里Department中除了含有Clerk外,也可以再含有子Department,它含有的子Department中也可以含有Clerk和Department,代码如下:
DepartComponent.java
package com.flyingh.abs; public abstract class DepartComponent { public void add(DepartComponent departComponent) { throw new UnsupportedOperationException(); } public void remove(DepartComponent departComponent) { throw new UnsupportedOperationException(); } public DepartComponent getChild(int i) { throw new UnsupportedOperationException(); } public abstract void print(); }
Clerk.java
package com.flyingh.bean; import com.flyingh.abs.DepartComponent; import com.flyingh.util.Sex; public class Clerk extends DepartComponent { private String id; private String name; private int age; private Sex sex; private float salary; public Clerk(String id, String name, int age, Sex sex, float salary) { super(); this.id = id; this.name = name; this.age = age; this.sex = sex; this.salary = salary; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Sex getSex() { return sex; } public void setSex(Sex sex) { this.sex = sex; } public float getSalary() { return salary; } public void setSalary(float salary) { this.salary = salary; } @Override public String toString() { return "Clerk [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + ", salary=" + salary + "]"; } @Override public void print() { // TODO Auto-generated method stub System.out.println(this); } }
Sex.java
package com.flyingh.util; public enum Sex { man, woman; }
Depart.java
package com.flyingh.bean; import java.util.ArrayList; import java.util.List; import com.flyingh.abs.DepartComponent; public class Depart extends DepartComponent { private List<DepartComponent> list = new ArrayList<DepartComponent>(); public Depart(List<DepartComponent> list) { super(); this.list = list; } @Override public void add(DepartComponent departComponent) { // TODO Auto-generated method stub list.add(departComponent); } @Override public void remove(DepartComponent departComponent) { // TODO Auto-generated method stub list.remove(departComponent); } @Override public DepartComponent getChild(int i) { // TODO Auto-generated method stub return list.get(i); } @Override public void print() { // TODO Auto-generated method stub for (DepartComponent departComponent : list) { departComponent.print(); } } }
Boss.java
package com.flyingh.bean; import java.util.ArrayList; import java.util.List; import com.flyingh.abs.DepartComponent; public class Boss { private List<DepartComponent> allList = new ArrayList<DepartComponent>(); public Boss(List<DepartComponent> allList) { super(); this.allList = allList; } public void printAllClerk() { for (DepartComponent departComponent : allList) { departComponent.print(); } } }
Client.java
package com.flyingh.client; import java.util.ArrayList; import java.util.List; import com.flyingh.abs.DepartComponent; import com.flyingh.bean.Boss; import com.flyingh.bean.Clerk; import com.flyingh.bean.Depart; import com.flyingh.util.Sex; public class Client { public static void main(String[] args) { DepartComponent clerk1 = new Clerk("001", "zhangsan", 22, Sex.man, 8000); DepartComponent clerk2 = new Clerk("002", "lisi", 23, Sex.woman, 7788); DepartComponent clerkA1 = new Clerk("A1", "wangwuA", 25, Sex.man, 8800); DepartComponent clerkA2 = new Clerk("A2", "hahaA", 22, Sex.woman, 7878); List<DepartComponent> listA = new ArrayList<DepartComponent>(); listA.add(clerkA1); listA.add(clerkA2); DepartComponent departA = new Depart(listA); DepartComponent clerkB1 = new Clerk("B1", "wangwuB", 25, Sex.man, 8800); DepartComponent clerkB2 = new Clerk("B2", "hahaB", 22, Sex.woman, 7878); List<DepartComponent> subList = new ArrayList<DepartComponent>(); subList.add(new Clerk("subB1", "hehe", 21, Sex.man, 7000)); subList.add(new Clerk("subB2", "heihei", 23, Sex.man, 7788)); DepartComponent subDepartB = new Depart(subList); List<DepartComponent> listB = new ArrayList<DepartComponent>(); listB.add(clerkB1); listB.add(clerkB2); listB.add(subDepartB); DepartComponent departB = new Depart(listB); DepartComponent clerkC1 = new Clerk("C1", "wangwuC", 25, Sex.man, 8800); DepartComponent clerkC2 = new Clerk("C2", "hahaC", 22, Sex.woman, 7878); DepartComponent clerkC3 = new Clerk("C3", "heheC", 22, Sex.man, 7879); List<DepartComponent> listC = new ArrayList<DepartComponent>(); listC.add(clerkC1); listC.add(clerkC2); listC.add(clerkC3); DepartComponent departC = new Depart(listC); List<DepartComponent> allList = new ArrayList<DepartComponent>(); allList.add(clerk1); allList.add(clerk2); allList.add(departA); allList.add(departB); allList.add(departC); Boss boss = new Boss(allList); boss.printAllClerk(); } }
程序运行结果如下:
Clerk [id=001, name=zhangsan, age=22, sex=man, salary=8000.0] Clerk [id=002, name=lisi, age=23, sex=woman, salary=7788.0] Clerk [id=A1, name=wangwuA, age=25, sex=man, salary=8800.0] Clerk [id=A2, name=hahaA, age=22, sex=woman, salary=7878.0] Clerk [id=B1, name=wangwuB, age=25, sex=man, salary=8800.0] Clerk [id=B2, name=hahaB, age=22, sex=woman, salary=7878.0] Clerk [id=subB1, name=hehe, age=21, sex=man, salary=7000.0] Clerk [id=subB2, name=heihei, age=23, sex=man, salary=7788.0] Clerk [id=C1, name=wangwuC, age=25, sex=man, salary=8800.0] Clerk [id=C2, name=hahaC, age=22, sex=woman, salary=7878.0] Clerk [id=C3, name=heheC, age=22, sex=man, salary=7879.0]
发表评论
文章已被作者锁定,不允许评论。
-
Interpreter
2011-11-24 21:19 838Interpreter Pattern:其意图是给定一个语言, ... -
Visitor
2011-11-24 17:37 659Visitor Pattern:表示一个作用于某对象结构中的各 ... -
Mediator
2011-11-24 16:22 662Mediator Pattern: 用一 ... -
Prototype
2011-11-24 11:32 605Prototype Pattern:就是通过复制现在已经存在的 ... -
Memento
2011-11-23 21:56 685Memento Pattern:在不破坏封闭的前提下,捕获一个 ... -
Flyweight
2011-11-23 18:38 651享元模式以共享的方式高效地支持大量的细粒度对象. 1).Fl ... -
Builder
2011-11-22 16:38 763Builder Pattern:可以将一个产品的内部表象与产品 ... -
Bridge
2011-11-22 15:05 684桥梁模式的用意是"将抽象化(Abstraction) ... -
Chain Of Responsibility
2011-11-21 23:05 658Chain Of Responsibility Pattern ... -
Abstract Factory
2011-11-21 22:00 644下面以Mac和PC的CPU和RAM为例,代码如下: Cpu. ... -
Proxy
2011-11-18 18:47 660Proxy Pattern:对其他对象提供一种代理以控制对这个 ... -
State
2011-11-18 15:57 677State Pattern:当一个对象的内在状态改变时允许改变 ... -
Iterator
2011-11-16 16:56 889Iterator Pattern:其意图是提供一种方法顺序访问 ... -
Template Method
2011-11-16 11:43 659模板方法模式:在一个方法中定义一个算法的骨架,而将一些实 ... -
Facade
2011-11-15 23:00 596Facade Pattern:为子系统中的各类(或结构与方法) ... -
Adapter
2011-11-15 21:43 630Adapter Pattern:将一个类的接口,转换成客户所期 ... -
Command
2011-11-14 23:06 5721).下面以Boss和Clerk为例: Clerk.java ... -
Factory Method
2011-11-13 20:44 595Simple Factory: 以Fruit为例,以下是实现 ... -
Decorator
2011-11-12 23:09 570装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的 ... -
Observer
2011-11-12 21:30 600观 察 者 模 式 定义了对象之间的一对多依赖,这样一来 ...
相关推荐
### DFT Composite Suite Pro 使用手册知识点解析 #### 一、软件概述 **DFT Composite Suite Pro**是一款专为Adobe After Effects (AE)平台设计的强大视觉特效合成工具包。该套件集成了高级软件设计与丰富的电影...
"三星手机连电脑的驱动——SAMSUNG Mobile USB Composite Device"是用于在Windows操作系统中连接和管理三星智能手机的重要软件组件。这个驱动程序允许用户通过USB接口将手机与计算机进行通信,实现数据同步、充电、...
标题中的“2.4G无线传输+USB Composite Device”指的是在一个STM32微控制器上同时实现2.4GHz无线通信和USB复合设备的功能。2.4GHz无线传输通常用于低功耗、短距离的数据通信,如蓝牙或Wi-Fi。而USB Composite Device...
### USB Composite API for Linux #### 10.1 Composite 设备简介 USB Composite 类是指能够支持多种设备功能的 USB 设备。例如,一个 USB 设备可能同时具备鼠标和键盘的功能。这种类型的设备与只具备单一功能的...
USB复合设备(USB Composite Device)是指能够同时支持多种USB设备类别的设备,比如鼠标和键盘的组合、打印机和扫描仪的组合等。这样的设备在USB规范中被定义为具有多个功能集,每个功能集对应一个特定的USB设备类型。...
《Composite2011中文手册》是一份专为合成软件用户设计的详尽参考资料,它提供了全面的指导和深入理解该软件所需的各项功能。作为一款处理图像和视频的专业工具,Composite2011在视觉效果制作领域具有广泛的应用。这...
qualcomm usb composite device 9025 www@wujupeng.com
本资料包"impact-composite_复合材料冲击_impact_ABAQUS_composite_"聚焦于探讨如何利用ABAQUS对复合材料进行冲击响应分析,特别是关注设定不同初速度和固定速度条件下的影响。 复合材料是由两种或更多种具有不同...
《Microsoft.Practices.CompositeUI.WinForms.dll:探索与应用》 在.NET框架的开发环境中,Microsoft.Practices.CompositeUI.WinForms.dll库扮演着一个重要的角色。它作为Composite UI Application Block(复合UI...
《Kurento-Tutorial-Composite-JS:构建多用户视频会议》 Kurento是一个强大的开源WebRTC媒体服务器,它提供了构建实时通信应用所需的工具和功能。本教程以"Kurento-tutorial-composite-js"为例,深入讲解如何在...
**组合模式(Composite Pattern)详解** 组合模式是一种结构型设计模式,它将对象组织成树形结构,使得用户可以对单个对象和对象集合进行统一操作。这种模式在处理部分与整体关系时非常有用,允许我们一致地处理...
STM32_USB_Composite_CDC_MSC_Demo项目是一个基于STM32微控制器的USB复合设备示例,它集成了CDC(通信设备类)和MSC(存储设备类)功能。这个项目展示了如何在STM32上同时实现串行通信接口(如虚拟COM口)和USB大...
在讨论视频传输格式时,S-video、Composite Video和Component Video是三种常见的标准,它们各自具有不同的特点和优势。以下是这些视频格式的详细说明和比较。 首先,S-video,也被称为Separated-Video,是比...
《ANSYS Composite PrepPost 用户指南》是为使用ANSYS复合材料前处理软件的用户提供的详细操作手册。该软件主要用于复合材料结构的分析和仿真,帮助工程师在设计阶段预测材料性能,优化设计方案,减少物理试验次数,...
这份博士论文《含有螺栓孔和开口孔的复合材料结构设计》(Design of Composite Structures Containing Bolt Holes and Open Holes),由瑞典皇家理工学院航空系出版,报告编号为99-03,是该领域的重要贡献。...
3. **Composite(组合)**:组合节点是包含其他Component对象的容器。它们也实现了Component接口,因此可以被客户端当作普通的Component对象处理。此外,Composite还负责管理其子对象,比如添加、删除和操作子对象。...
《深入理解Microsoft.Practices.CompositeUI.dll:DLL文件在软件开发中的核心作用》 Microsoft.Practices.CompositeUI.dll是微软公司开发的一个动态链接库(DLL)文件,它属于微软的Composite UI应用程序框架,该...
在"Matlab composite.m"文件中,我们可能看到以下几个关键知识点: 1. **材料属性**:首先需要定义各层材料的弹性模量E、剪切模量G、泊松比ν。对于复合材料,这些参数通常与纤维和基体的性质以及纤维方向有关。 2...
标题中的“Hibernate通过Composite-element配置外联表实例”是指在Java持久化框架Hibernate中,使用Composite-element注解或XML配置来处理复杂类型的属性,这些属性通常涉及到一对多或一对一的关系,但它们被存储在...