简单理解-Head First 设计模式

Part 0 闲聊

Part 1 闲聊

首先,想告诉大家的是,《Head First 设计模式》是一本通俗易懂的书,无论是在校大学生还是工作3,5年后的码农们,读来应该都是轻松➕愉快的。至少此书比权威书籍——四人组的《设计模式》容易理解和坚持看完。而我是花了2个月的晚上和周末断断续续时间看完的,别被这637页的厚度给吓倒了,很多插图和叙述是可以带着看小书的心情和节奏去完成的。其实你会给自己立一个flag,最好能落实到天、小时,这样执行到位不到位就很一目了然了。下面是我的阅读时间表,时间上算是很宽裕了,因为我还预估了思考和对比记忆的时间。

一共14章,预计2个月完成(10月中旬~截止日期12-1512章,21章,140页,120页(早上1个小时+晚上)

目标1111号看完第5章,即190页
目标21129号看完第13章,48章,即610页
目标31215号完成本书第一遍阅读

Part 2 内容

我们知道四人组的《设计模式》共介绍了23种,并且将其分成3类,分别是:创建型、结构型、行为型,如下所示:

  • 创建型5个。工厂方法模式、抽象工厂模式、Builder模式(Retrofit)、单例模式(类初始化)、原型模式
  • 结构型7个。适配器模式、装饰模式(File操作)、代理模式(静态代理——代理对象内部操作委托对象、动态代理——代理对象里面不指定特定的委托对象,更加灵活)、组合模式、桥接模式、外观模式、享元模式
  • 行为型11个。观察者模式(RxJava)、策略模式(用策略模式的多态代替switch)、模板方法模式、命令模式、迭代器模式(集合的Iterator)、中介者模式、备忘录模式、解释器模式、状态模式、责任链模式、访问者模式

《Head First 设计模式》的主要内容就是,前面用1~11章介绍他们觉得常用的14个设计模式;然后用12章介绍了MVP复合模式包含的设计模式;紧接着的13章分享了设计模式的概念、分类以及反模式等对设计模式的思考与感悟;这里也和目录后面第1章前面的引子想呼应,对于思考的思考;最后第14章各用2页介绍剩余的9个设计模式。
简单理解-Head First 设计模式_第1张图片
下面我们进入本文的重点,看看每章的核心内容,更详细的内容还需读者亲自品味。

1)策略(Strategy)模式
  • 面向对象(oo)基础:抽象、封装、多态、继承;
  • oo设计特性:可复用、可扩充、可维护;
  • oo原则:封装变化(把会变化的部分取出并封装起来,好让其他部分不会收到影响)、多用组合、少用继承(组合可以委托(外包))、针对接口编程,不针对实现编程;
  • oo模式:策略模式,定义算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。
2)观察者(Observer)模式
  • oo原则:为交互对象之间的松耦合设计而努力(更有弹性、更能应对变化和将互相依赖降到了最低);
  • oo模式:观察者模式,在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。
3)装饰者(Decorator)模式
  • oo原则:开闭原则(对扩展开放,对修改关闭);
  • oo模式:装饰者模式,动态地将责任附加到对象上,想要扩展功能,装饰者提供有别于继承的另一种选择。
4)工厂方法(Factory Method)模式、抽象工厂(Abstract Factory)模式
  • oo原则:依赖抽象,不要依赖具体类;
  • oo模式:工厂方法模式,定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到子类;抽象工厂模式,提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
5)单例(Singleton)模式
  • oo模式:单例模式,确保一个类只有一个实例,并提供全局访问点。
6)命令(Command)模式
  • oo模式:命令模式,将请求封装成对象,这可以让你使用不同的请求、队列,或者日志请求来参数化其他对象,命令模式也可以支持撤销操作。
7)适配器(Adapter)模式、外观(Facade)模式
  • oo原则:最少知识原则,只和你的密友谈话;
  • oo模式:适配器模式,将一个类的接口,转换成客户期望的另一个接口;外观模式,提供了一个统一的接口,用来访问子系统中的一群接口。
8)模版方法(Template)模式
  • oo原则:好莱坞原则,别调用我们,我们会调用你;
  • oo模式:模版方法模式,在一个方法中定义一个算法的骨架,将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤;
  • 内容还包括:与策略模式的对比,它们都封装算法,一个用组合,一个用继承。
9)迭代器(Iterator)模式、组合(Composite)模式
  • oo原则:类应该只有一个改变的理由;
  • oo模式:迭代器模式,提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示;组合模式,允许你将对象组成树形结构来表现整体/部分的层次结构,组合能让客户以一致的方式处理个别对象和对象组合。
10)状态(State)模式
  • oo模式:状态模式,允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类;
  • 内容还包括:状态模式与策略模式的区别,它们类图一样,意图不同。
11)代理(Proxy)模式
  • oo模式:代理模式,为另一个对象提供一个替身或占位符以访问这个对象(远程代理、动态代理、虚拟代理、保护代理、缓存代理。。。);
  • 内容还包括:代理模式与装饰者模式的区别,装饰者模式为对象加上行为,而代理则是控制访问。
12)MVC
  • oo模式:复合模式,结合2个或2个以上的模式,组成一个解决方案,解决一再发生的一般性问题;
  • MVC,M使用观察者模式,V使用组合模式,C使用策略模式。

Part 3 小手册

下面是本书的一个集合小手册的照片:
简单理解-Head First 设计模式_第2张图片

Part 4 心得

  • 设计模式并不是传说中的那么难,从《设计模式》到《大话设计模式》,再到《Head First 设计模式》,后浪在前浪的基础上再此咀嚼,以留给未来的后浪观摩学习,变得越来越大白话、简单,其实核心思想还是没变,就像我们还是打工人一样。
  • 学以致用吧,得到再好的思想、再好的工具,不实操的话永远只是纸上谈兵,应该在需要的时候就用上。
  • 自己也想做一个设计模式的安利者,学到的就是赚到的,我希望其他小伙伴也能赚得盆满钵满。

你可能感兴趣的:(设计模式,我是一个热爱分享的码农,设计模式,Head,First,设计模式,读书笔记)