写点什么

腾讯技术专家图解 29 种设计模式中常见问题类级与方法级解决方案

用户头像
周老师
关注
发布于: 2020 年 09 月 01 日
腾讯技术专家图解29种设计模式中常见问题类级与方法级解决方案



如今,介绍和讲解设计模式的书籍可谓汗牛充栋。无论是定义、解读、延伸还是扩展,都是基于面向对象的设计原则,用了放大镜对着GoF (Design Patterns一书)提出的23种设计模式,如科学解剖一般,剖析每一道脉络,观察每一片纹理,细微至纤毫毕现,真可以说是道尽个中妙处:许多精妙阐述,又如黄钟大目,振聋发聩,醍醐灌顶。

是否设计模式的精妙之处,业已为这些著作所穷尽?然,又未必尽然!以模式而论,若只局限在这23种模式的范围内,几乎每种模式的变化,都可以被悉心推演出来;每种模式的结构,也已被阐述得淋漓尽致。然而,若论及设计,则如大道苍穹,实则是不可穷尽的。基本上,设计的复杂程度已不亚于一个纷繁的世界,而软件,就是我们要构造的这个世界。

因此,再出现一本讲解设计模式的书,就不足为怪了。那么,它值得你去阅读吗?讨论一本书是否值得阅读, 应基于书本身的价值去判断,判断的标准则依据读者的目标而定。

GoF对于23种设计模式的分类已经深入人心,即众所周知的创建型模式、结构型模式与行为型模式。这分类浅显易懂, 明白无误地表达 了模式的意图 与适用场景。但是,这一分类仍有不足之处。例如创建型模式除了关注对象的创建之外,还需处理好对象之间的结构;又如桥接模式对于抽象与实现的解耦,在一定程度上又体现了对行为的抽象;再比如行为型模式中的迭代器模式,其实还涵盖了创建迭代器的职责。

本书通过一个完整的Java项目对经典著作Design Patterns -书介绍的23种设计模式进行了深入分析与讲解,实践性强,却又不失对模式本质的探讨。本书创造性地将这些模式分为5大类别,以充分展现各个模式的重要特征,并结合UML类图与对应的Java程序,便于读者更好地理解。全书给出了大量的练习,作为对读者的挑战,以启发思考,督促读者通过实践练习的方式来掌握设计模式。同时,作者又给出了这些练习的参考答案,使读者可以印证比较,找出自己的不足,提高设计技能。

全书共五部分,现在大致先来看一下:



由于篇幅限制小编,小编只在这里给大家展示目录及部分内容,有需要完整文档的程序猿(媛)可以帮忙转发+关注,关注文末公众号获取

第1章绪论

为何需要模式

模式是做事的方法,是实现目标,研磨技术的方法。这种对高效技术不懈追求的思想,广泛见于诸多领域,例如制作精美的佳肴、生产绚烂的烟花、开发出色的软件及其他技艺。对于任何一种迈向成熟的全新技艺,身处这个行当的人们都需要寻找通用而有效的方法,以达到他们的目标,并解决不同场景的问题。实践技艺的团体通常会发明一些行话,用来讨论他们的技艺。一些被公认的行话反映了某种模式,或者建立了实现准确目标的技术。随着技艺的增长,以及这些行话的发展,一些行话的创作者开始扮演重要的角色。他们对技艺模式进行编定,为这些行话设定标准,然后发布这些有效的技艺。





第1部分接口型模式

抽象地讲,类的接口是类允许其他类对象访问的方法与字段集。接口通常代表一种承诺,即方法需要实现接口方法名表示的操作,遵循代码注释、测试和其他文档说明。类的实现就是位于方法体中的代码。

Java将接口概念提升为独立的结构,体现了接口(对象必须遵循的承诺)与实现(对象如何履行承诺)的分离。Java接口允许多个类提供相同的功能,也允许一个类同时实现多个接口。许多设计模式都使用了Java内建的这一特性。例如,运用适配器(Adapter)模式,通过使用一个接口类型来适配类的接口,从而满足客户的需要。若要用好Java基本的内建特性,就要从接口开始,确保自己掌握了Java特性的工作原理。

  • 第2章接口型模式介绍

  • 第3章适配器(Adapter) 模式

  • 第4章外观(Facade) 模式

  • 第5章合成(Composite) 模式

  • 第6章桥接(Bridge) 模式













第2部分职责型模式

对象的职责好似Oozinoz公司呼叫中心所代表的职责。当要从Oozinoz公司购买烟火弹时,你需要联系公司代表或者代理机构。他/她需要完成一些既定任务, 通常,会将这些任务委托给其他系统或者其他人去完成。有时,这些代表会将这些任务请求委托给唯-的中心机构, 该机构会协调各种请求,或者将任务请求抛给职责链(chain of responsibility)去完成。就像呼叫中心代表-样,普通的对象也需要一些独 立操作的信息和方法。然而,有时你却需要将对象从一-般的独立性操作中分离出来,以便集中职责。很多设计模式都能满足这一需求。有的模式则通过引入对象来封装这些请求,并将该对象从依赖于它的其他对象中分离出来。面向职责的模式提供了用于集中、加强以及限制普通对象责任的技术。

  • 第7章职责型模式介绍

  • 第8章单例(Singleton)模式

  • 第9章观察者(Observer) 模式

  • 第10章调停者(Mediator) 模式

  • 第11章代理(Proxy) 模式

  • 第12章职责链(Chain of Responsibility)模式

  • 第13章元(Flyweight)模式

















由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!不会只有大纲和目录,有需要的程序猿(媛)可以帮忙转发+关注,关注文末公众号获取

第3部分构造型模式

若要创建一个Java类,通常会为它提供多个构造函数性。构造函数是有用的,尽管只有客户类知道该使用哪个构造函数以及传递什么参数来创建类。很多设计模式都可以解决常规构造函数无法处理的情况。在检查Java语言在构造函数设计上存在的不足之前,先来回顾一下常规的构造函数。

  • 第14章构造型模式介绍

  • 第15章构建者(Builder) 模式

  • 第16章工厂方法(Factory Method)模式

  • 第17章抽象工厂(Abstract Factory)模式

  • 第18章原型(Prototype) 模式

  • 第19章备忘录(Memento) 模式















第4部分操作型模式

在编写一个Java方法时,你完成的是整个工作中级别高于单行代码的一个基本单元。这些方法牵涉到整体设计、架构以及测试计划。编写方法是面向对象编程的中心环节。但反过来说,尽管方法是软件设计的核心,我们还是难以解释方法到底是什么,方法又是如何工作的。追本溯源,还是因为许多开发人员常常混淆了方法与操作的含义。进一步讲,算法和多态的概念比方法更加抽象,但最终它们还是通过方法来实现。

对术语“算法”、“多态”、“方法”与“操作”具有清晰的认识,有助于你理解多种设计模式。尤其是状态模式、策略模式和解释器模式,都是通过实现多个类中的方法来完成操作的。但是,只有当我们对方法和操作的理解达成共识时,这样的表达才有用。

  • 第20章操作型模式介绍

  • 第21章模板方法(Template Method)模式

  • 第22章状态(State) 模式

  • 第23章策略(Strategy) 模式

  • 第24章命令(Command)模式

  • 第25章解释器(Interpreter) 模式















第5部分扩展型模式

在使用Java编程时,你并不是从零开始,而是“继承”了Java类库的所有功能。通常,还可以使用同事和前人写好的代码。只要你不是在重新组织或改进遗留代码,你就是在对它进行扩展。可以认为: Java 编程本身就是一种扩展。

  • 第26章扩展型模式介绍

  • 第27章装饰器(Decorator) 模式

  • 第28章迭代器(Iterator) 模式

  • 第29章访问者(Visitor) 模式











由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!不会只有大纲和目录,有需要的程序猿(媛)可以帮忙转发+关注,关注下方公众号获取





发布于: 2020 年 09 月 01 日阅读数: 68
用户头像

周老师

关注

精通java热衷于分享java领域资料,感谢支持 2020.06.09 加入

还未添加个人简介

评论

发布
暂无评论
腾讯技术专家图解29种设计模式中常见问题类级与方法级解决方案