1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Web Service 协议及实现 I. XML XML-Schema XMI * Web Service 协议及实现 I. XML XML Schema XMI II.WSDL SOAP III.UDDI IV.BPEL I.XML Composite对象模式 XML介绍 UML与XML及XML Schema转换 XMI 演示与练习:TH准备! Composite模式-组合 1.结构 Composite模式-组合 2.目的 将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使 得客户端对单个对象和组合对象的使用具有一致性. 3.适用性 (1)使客户端调用简单,客户端可以一致的使用组合结构或其中单个对象,用户不必关系自己处理的是单个对象还是整个组合结构,这就简化了客户端代码。 (2)更容易在组合体内加入对象部件. 客户端不必因为加入了新的对象部件而更改代码。 4.效果 Composite就是树形结构图。组合体内这些对象都有共同接口,当组合体一 个对象的方法被调用执行时,Composite将遍历(Iterator)整个树形结构,寻找同 样包含这个方法的对象并实现调用执行。可以用牵一动百来形容。 通过反向关系环构造树状类型对象:网络、树、链表。 所以Composite模式使用到Iterator模式,和Chain of Responsibility模式类似。 Composite模式的自我关联(递归关联): 1)自我关联的上游与下游多重性=1:n对象实例形成一个树状层次结构。例 自我容纳的容器 self-containing container :*1 public class Container { private Vector containers = new new Vector(); private Container parent; …… } 目录层次结构 directory hierarchy*11* 2)自我关联的上游与下游多重性=1:1对象实例形成一个链表。 例 不同版本的文档。0..11 3)自我关联的上游与下游多重性=n:m对象实例形成一个网络。例 邮递网络。** 5.实现 首先定义一个接口或抽象类,Composite却有个规定,那就是要在接口内 部定义一个用于访问和管理Composite组合体的对象称之为部件Component. 下面的代码是以抽象类定义,一般尽量用接口interface。 Content类是抽象类, Element类 是XML中的元素, Text类包含一块文字或 字符串。模式包含一个反向关系环,即元素类可包含多个内容类Content对 象,产生递归关联。Element中elements:Element[*]及texts:Text[*]与contents:Content[*]合并,去掉elements及texts属性。 public abstract class Content { private Element parentElement; public Content(Element parentElement){ this.parentElement = parentElement; } public abstract String toString(); } public class Element extends Content {private String name;private Vector contents = new Vector();public Element(String name, Element parentElement) {super(parentElement); = name;}public Element addElement(String name) {Element e = new Element(name, this);contents.addElement(e);return e;} public Text addText(String text) {Text e = new Text(text, this);contents.addElement(e);return e;}public String toString(boolean recursive, String lead) {String s = lead + + name + \n; // start tagif (!recursive) return s;for (int i=0; icontents.size(); i++) {Content c = (Content)c

文档评论(0)

cj80011 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档