《研磨设计模式》读书笔记之:组合模式、模板方法模式

前言:本篇系看完《研磨设计模式》一书的个人理解和总结,可能存在不正确的地方,看时需要持怀疑态度。另外,所有的图都是示意图,示意,示。

组合模式(Composite):

几点解释:

  1. 树形结构中有叶子节点,组合节点(包含其他节点),组合模式通过抽象出一个高层的父类,来对外提供统一的外观。这样,客户端就可以使用同一个引用类型来操作不同的节点对象。抽象父类中集合了所有类型的子类节点所需要的功能,大多数功能都会提供默认实现,一般是抛出不支持此操作的异常。子类继承时按需实现特定的方法即可。
  2. 我们写的Java程序,在编译的时候,通过词法分析会得到一颗语法树,接下来的工作就是要遍历这颗语法树进行语法分析和语义分析。这颗语法树可以使用组合模式来实现,这样就可以以统一的方式来操作了。
  3. 使用组合模式可以构建出外观统一的树形结构,有的时候我们会遍历这个树形结构,此时要注意的问题是 树形结构中可能会出现环,从而导致死循环的出现。导致环的原因在于同一个对象在这个树形结构中出现了两次,一个可行的解决方法在于添加对象时先检查下这个对象之前是否添加过。

模板方法模式(TemplateMethod):

几点解释:

  1. 模板方法模式的目的在于将算法骨架固定下来,并在固定的点通过抽象方法的方式给子类提供扩展的机会。
  2. 除了继承并实现抽象方法的方式外,也可以通过Java回调实现模板方法模式,即通过传入匿名内部类对象的形式,将具体的步骤传入进来
  3. java.util.concurrent包中的 AQS类,即是通过继承抽象类方式实现模板方法模式;Collections.sort(list, new Comparator<Object>() {})方法,即是通过传入回调的方式实现了模板方法模式。
  4. 咋一看结构其实很像工厂方法模式,同样是抽象方法,由子类实现,并且抽象方法一般服务于内部,但是 二者的目的不同:工厂方法模式的抽象方法需要子类来选择一个具体的实现来返回,目的在于选择并创建具体的对象实例,而模板方法模式的抽象方法是具体算法中的一些小的步骤,一般会返回原始类型的值,用来决定算法的下一步走向之类的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本电子书一共两个压缩文档,本文件为part2. 《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,培养正确的“设计观”;中高级内容则深入探讨如何理解这些模式,包括模式中蕴涵什么样的设计思想,模式的本质是什么,模式如何结合实际应用,模式的优缺点以及与其他模式的关系等,以期让读者尽量去理解和掌握每个设计模式的精髓所在。    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。    《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础    第2章 简单工厂    第3章 外观模式    第4章 适配器模式(Adapter)    第5章 单例模式(Singleton)    第6章 工厂方法模式(Factory Method)    第7章 抽象工厂模式(Abstract Factory)    第8章 生成器模式(Builder)    第9章 原型模式(Prototype)    第10章 中介者模式(Mediator)    第11章 代理模式(Proxy)    第12章 观察者模式(Observer)    第13章 命令模式(Command)    第14章 迭代器模式(Iterator)    第15章 组合模式(Composite)    第16章 模板方法模式(Template Method)    第17章 策略模式(Strategy)    第18章 状态模式(State)    第19章 备忘录模式(Memento)    第20章 享元模式(Flyweight)    第21章 解释器模式(Interpreter)    第22章 装饰模式(Decorator)    第23章 职责链模式(Chain of Responsibility)    第24章 桥接模式(Bridge)    第25章 访问者模式(Visitor)    附录A常见面向对象设计原则    附录BUML简介    参考文献
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值