字节跳动内部学习资料泄露版——武林秘籍之设计模式迷你手册

这本剑谱记载着23种招式,并分成三部分,分别为创建型、结构型和行为型,每个招式分别有图谱(UML类图)以及文字说明(设计模式的意图和适用性)。

3、入门必备

行走江湖,需要学几招防身的基本招式,以下介绍几招简单得不能再简单的基本功,分别是依赖、关联、继承和聚合,其图谱和招式如下所示,各位看官花几秒钟时间阅读以下类图和对应的代码实现。

1.依赖

2.关联

3.继承

4.聚合

有了这几招基本功之后,便可进入具体招式的修炼,任何招式都是由这四种关系组合而成。接下来我们进入23种招式的研习。研习的路线如下:

(1)打开《设计模式迷你手册》–>(2)查看UML类图–>(3)分析类图中依赖、关联、继承、聚合的关系,着手开始写代码–>(4)写完各个类图,通过Client类进行验证–>(5)揣摩该模式的意图、适用性、优缺点–>(6)研究该模式的实际应用。

本文目的在于让各位侠客根据最原始的剑谱《设计模式迷你手册》,自行领悟代码,因此只介绍了如何把UML图实现为代码,第(5)、(6)点本文并没有详细介绍,各位侠客日后需多加钻研这两点,毕竟这才是设计模式的精华。

4、组合模式(Composite)

在这个招式里面,我们可以找到关联、继承、聚合这三招入门招式,因此写起来并不复杂,如下:

Component:节点的抽象类

Composite:组合体,如树一般,可包含叶子节点或子树

Leaf:叶子节点

Client:客户端,构造一个组合体,并遍历该组合体的所有叶子节点,如下图所示:

这个类很重要,这个类是否写正确,以及运行结果是否正确意味着对设计模式是否真正理解

5、责任链模式(Chain of Responsibility)

这个招式包含了继承和依赖的关系,但是有一个类图比较难以理解,如下图所示

如果把改图切换成如下所示,则比较好理解

Handler依赖自身,即Handler类中有个全局变量,变量名为successor,代码如下所示:

解决完这个问题后,剩下的难点就是如何建立起一条责任链:

Handler:所有责任处理者的抽象父类

ConcreteHandler1:责任处理者1,本处理者关联其他处理者

ConcreteHandler2:责任处理者2,本处理者关联其他处理者

ConcreteHandler3:责任处理者3,对逻辑进行处理

客户端,构造责任链:处理者1–>处理者2–>处理者3,并执行处理的逻辑,真正处理逻辑的责任者为处理者3。

6、观察者模式(observer)

这里特意将这个图谱拿出来给各位一起研究,因为这个招式略显复杂,应慢慢研习。图谱中包括依赖、继承、聚合这三招基本招式,除此之外,不能错过图谱中的注释部分,里面的描述很有价值。

Subject:所有被观察者的抽象父类,包含注册观察者、注销观察者和通知观察者的方法。

ConcreteSubject:被观察者的实体对象,包含改变状态的方法,状态一旦改变,要通知所有观察者。

Observer:所有观察者的抽象父类。

ConcreteObserver:观察者的实体对象

Client:客户端对象,当被观察者的状态发生改变时,立即通知所有的观察者,Client执行后,后台打印“被观察者的状态发生改变,通知并自动更新跟其有关的其他对象”。

写在最后

对程序员来说,很多技术的学习都是“防御性”的。也就是说,我们是在为未来学习。我们学习新技术的目的,或是为了在新项目中应用,或仅仅是为了将来的面试。但不管怎样,一定不能“止步不前”,不能荒废掉。

![
[]


文章以下内容会给出阿里与美团的面试题(答案+解析)、面试题库、Java核心知识点梳理等

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

va核心知识点梳理等

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值