- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Visitor Pattern 效果 访问者模式使得易于增加新的操作 访问者集中相关的操作而分离无关的操作 Visitor Pattern Example:访客穿梭在由文件和目录组成的数据结构内,打印文件信息。 名称 说明 Visitor 访问文件或者目录的访客的抽象类 Acceptor 接受Visitor类的对象实例的数据结构的接口 ListVisitor Visitor的子类,打印文件或目录信息的类 Entry File和Directory的父类的抽象类(实现Acceptor接口) File 文件类 Directory 目录类 FileTreatmentException 发生在对File进行add时例外 Main 测试用类 Visitor Pattern Visitor.java ListVisitor.java Acceptor.java Entry.java File.java Directory.java FileTreatmentException.java Main.java uses uses Visitor Pattern 启示 双重调度(Double Dispatch) acceptor.accept(visitor) visitor.visit(acceptor) 好复杂的处理Visitor Pattern,Why? 把处理从数据结构中分出来。 维持结构和以这个结构为基础的处理是两回事情 Visitor Pattern 启示 OCP原则 The Open-Closed Principle 主张: 扩充(Extension)时要打开(Open); 修改(Modification)时要关闭(Closed) Means :欢迎扩充程序,但不准修改现有的类;在不修改现有的类的原则下就可以扩充。 Visitor总结 一,访问者模式的角色:抽象访问者:声明一个或者多个访问操作,形成所有的具体元素都要实现的接口具体访问者:实现抽象访问者所声明的接口抽象节点:声明一个接受操作,接受一个访问者对象作为参量具体节点:实现了抽象元素所规定的接受操作结构对象:遍历结构中的所有元素,类似List?Set等 二,在什么情况下应当使用访问者模式访问者模式应该用在被访问类结构比较稳定的时候,换言之系统很少出现增加新节点的情况。 三,访问者模式的缺点:1,增加节点困难2,破坏了封装 因为访问者模式的缺点和复杂性,很多设计师反对使用访问者模式。 Go The End of Design Pattern 设计模式 总结 创建型模式 Singleton模式解决的是实体对象个数的问题。除了Singleton之外,其他创建型模式解决的都是new所带来的耦合关系。 Factory Method, Abstract Factory, Builder都需要一个额外的工厂类来负责实例化“易变对象”,而Prototype则是通过原型(一个特殊的工厂类)来克隆“易变对象”。 如果遇到“易变类”,起初的设计通常从FactoryMethod开始,当遇到更多的复杂变化时,再考虑重构为其他三种工厂模式( Abstract Factory,Builder , Prototype )。 Flyweight Example:利用单个字符输出字符串。 名称 说明 BigChar 表示大型字符的类 BigCharFactory 共享产生BigChar的对象实例 BigString 表示多个BigChar所产生的大型文本 Main 测试用类 BigChar BigCharFactory Main Uses Uses BigString Flyweight Flyweight参与者 Flyweight参与者:BigChar FlyweightFactory:利用此工厂共享对象实例,BigCharFactory Client:利用FlyweightFactory产生并使用Flyweight,BigString Flyweight 启发 影响会被传到所有相关的位置:共享要设置得恰当。 Intrinsic和Extrinsic:BigChar对象实例是BigString的第几个字符因BigChar所在位置而变,属于Extrinsic信息,BigChar属于Intrinsic信息。 因为减少了New运算,速度也许会有所提升。 Chapter Seven 设计模式 Proxy 代理 代替别人做事 有些事情本人不做,交由代理完成 但做事能力有限 对象结构类型 Proxy 意图 为其他对象提供一种代理以控制对这个对象的访问。 别名 Surrogate 动机 对一个对象进行访问控制的原因是为了在我们确实需要这个对象时才对它进行创建和初始化。 Proxy
您可能关注的文档
最近下载
- 满液式蒸发器换热管布置的优化设计剖析.PDF VIP
- 超滤反渗透培训PPT课件.pptx VIP
- 牛津英语基础训练六年级上册.pdf VIP
- 2026年品牌建设营销实战培训ppt.pptx VIP
- 安徽省淮北市第一中学高一上学期末数学答案-A4.docx VIP
- 2016输变电工程建设标准强制性条文实施管理规程第7部分:输电线路工程施工.docx VIP
- DBJ/T36-061-2021 建筑与市政地基基础技术标准(1).pdf VIP
- 初中英语:【沪教】七上英语单词表(英译汉默写).pdf VIP
- 《精密制造之光刻胶技术》课件.ppt VIP
- 电力电子技术 (周晓燕)课后习题答案.docx VIP
原创力文档


文档评论(0)