简单理解-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个设计模式。
在这里插入图片描述
下面我们进入本文的重点,看看每章的核心内容,更详细的内容还需读者亲自品味。

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 小手册

下面是本书的一个集合小手册的照片:
在这里插入图片描述

Part 4 心得

  • 设计模式并不是传说中的那么难,从《设计模式》到《大话设计模式》,再到《Head First 设计模式》,后浪在前浪的基础上再此咀嚼,以留给未来的后浪观摩学习,变得越来越大白话、简单,其实核心思想还是没变,就像我们还是打工人一样。
  • 学以致用吧,得到再好的思想、再好的工具,不实操的话永远只是纸上谈兵,应该在需要的时候就用上。
  • 自己也想做一个设计模式的安利者,学到的就是赚到的,我希望其他小伙伴也能赚得盆满钵满。
C++ Qt设计模式(第2版)是美国萨福克大学已使用十余年的经典教程,利用跨平台开源软件开发框架Qt阐释了C++和设计模式中的主要思想。全书共分四个部分:第一部分介绍C++、UML、Qt、模型-视图、SQL、XML、设计模式等基础知识,目的是为零基础的C++初学者铺垫一条学习面向对象编程的快捷之路;第二部分讲解内存访问、继承等重要的C++特性,是前一部分的延伸和拓展;第三部分使用Phonon编写了一个多媒体播放器,展示了主要技术理念的应用方法;附录部分给出了C++保留关键字、Debian和Qt程序开发环境的配置等内容。每节的练习题和各章后面的复习题,既可作为课堂上的讨论题,也可进一步启发读者对于关键知识点的思考。 C++ Qt设计模式(第2版)目录 第一部分 设计模式与Qt 第1章 C++简介 2 第2章 类与对象 46 第3章 Qt简介 78 第4章 列表 85 第5章 函数 94 第6章 继承与多态 116 第7章 库与设计模式 163 第8章 QObject, QApplication,信号和槽 179 第9章 窗件和设计师 195 第10章 主窗口和动作 225 第11章 范型和容器 246 第12章 元对象,属性和反射编程 262 第13章 模型和视图 277 第14章 验证和正则表达式 302 第15章 XML解析 318 第16章 更多的设计模式 335 第17章 并发 353 第18章 数据库编程 376 第二部分 C++语言规范 第19章 类型与表达式 386 第20章 作用域与存储类 416 第21章 内存访问 431 第22章 继承详解 443 第三部分 编 程 作 业 第23章 MP3自动点唱机作业 456
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值