结构型模式组合模式.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

*使用组合模式——安全方式第30页,共43页,星期日,2025年,2月5日*示例代码namespaceCompositPattern{publicabstractclassGraphics{protectedstringname;publicGraphics(stringname){this.name=name;}publicabstractvoidDraw();}}第31页,共43页,星期日,2025年,2月5日结构型模式组合模式第1页,共43页,星期日,2025年,2月5日上篇回顾——装饰者模式装饰者模式:动态地将职责附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。*第2页,共43页,星期日,2025年,2月5日*组合模式组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。第3页,共43页,星期日,2025年,2月5日*生活中的例子组合模式将对象组合成树形结构以表示部分-整体的层次结构。让用户一致地使用单个对象和组合对象。虽然例子抽象一些,但是算术表达式确实是组合的例子。算术表达式包括操作数、操作符和另一个操作数。操作数可以是数字,也可以是另一个表达式。这样,2+3和(2+3)+(4*6)都是合法的表达式。第4页,共43页,星期日,2025年,2月5日*生活中的例子第5页,共43页,星期日,2025年,2月5日*生活中的例子在Word中我们经常会将一些图形元素进行“组合”,组合以后的图形还可以向简单图元那样进行移动、变形等等操作;除此以外,在Word中,我们对于一个字符、一个词组、一句话、一个段落,甚至是整篇文章的操作是相同的,我们都可以进行剪切、复制,进行字体与大小的调整,进行颜色的变换。这些例子都是Composite模式的实例,我们将简单的元素组合成复杂的元素,然后还可以像操作简单元素那样操作组合元素。第6页,共43页,星期日,2025年,2月5日*认识装饰者模式——结构第7页,共43页,星期日,2025年,2月5日*认识装饰者模式——参与者Component为组合中的对象声明接口。在适当的情况下,实现所有类共有接口的缺省行为。声明一个接口用于访问和管理Component的子组件。在递归结构中定义一个接口,用于访问一个父组件,并在合适的情况下实现。Leaf在组合中表示叶节点对象,叶节点对象没有子节点。在组合中定义图元对象的行为。第8页,共43页,星期日,2025年,2月5日*认识装饰者模式——参与者Composite定义有子部件的那些部件的行为。存储子部件。在Component接口中实现与子部件有关的操作。Client通过Component接口操纵组合部件的对象。第9页,共43页,星期日,2025年,2月5日*示例通过一些基本图像元素(直线、圆等)以及一些复合图像元素(由基本图像元素组合而成)构建复杂的图形。在设计中我们对每一个对象都配备一个Draw()方法,在调用时,会显示相关的图形。可以看到,这里复合图像元素它在充当对象的同时,又是那些基本图像元素的一个容器。第10页,共43页,星期日,2025年,2月5日*示例第11页,共43页,星期日,2025年,2月5日*第一次尝试namespaceNoPattern{publicabstractclassGraphics{protectedstringname;publicGraphics(stringname){this.name=name;}publicabstractvoidDraw();}}第12页,共43页,星期日,2025年,2月5日*第一次尝试usingSystem;namespaceNoPattern{publicclassLine:Graphics{publicLine(stringname):base(name){//}publicoverridevoidDraw()

文档评论(0)

xiaolan118 + 关注
实名认证
文档贡献者

你好,我好,大家好!

版权声明书
用户编号:7140162041000002

1亿VIP精品文档

相关文档