HeadFirst设计模式
文章平均质量分 71
奋斗吧!骚年!
一名爱健身的软件工程本科生
展开
-
《headfirst设计模式》读书总结-包含C++代码
背景介绍:假期期间阅读《HeadFirst设计模式》这本书,这本书写的很不错,内容生动不枯燥非常适合新手学习设计模式。在阅读之后我便写下了这本书的读书笔记,并将部分java代码用C++进行实现,感觉收获很多。GitHub网站上我放有java代码、C++代码和书本的pdf 有兴趣的同学可以进行观看 GitHub:https://github.com/fightingzxd/HeadFirst下面是我对每一章进行的总结,方便我日后进行复习,有兴趣的同学也可以看一下哟!链接如下:《headfirst原创 2022-02-15 18:45:02 · 912 阅读 · 0 评论 -
《headfirst设计模式》读书笔记14-剩下的模式
目录1. 桥接1. 桥接原创 2022-02-15 16:59:01 · 267 阅读 · 0 评论 -
《headfirst设计模式》读书笔记13-与设计模式相处
目录1. 定义设计模式2. 模式分类2.1 创建型、行为型和结构型2.2 类和对象3. 用模式思考4. 反模式1. 定义设计模式模式是在某情境下,针对某问题的某种解决方案”如果你发现自己处于某个情境下,面对着所欲达到的目标被一群约束影响着的问题,然而,你能够应用某个设计,克服这些约束并达到该目标,将你领向某个解决方案2. 模式分类2.1 创建型、行为型和结构型2.2 类和对象3. 用模式思考4. 反模式反模式告诉你如何采用一个不好的解决方案解决一个问题1.反模式看起原创 2022-02-14 19:52:25 · 228 阅读 · 0 评论 -
《headfirst设计模式》读书笔记12-复合模式
目录1.Model-View-Controller(模型-视图-控制器)2. Model23. 总结所谓的复合模式,是指一群模式被结合起来使用,以解决一般性问题。我们很快就会看到Model-View-Controller(模型-视图-控制器)复合模式。它是由数个模式结合起来而形成的新模式,一再地被用于解决许多设计问题1.Model-View-Controller(模型-视图-控制器)2. Model23. 总结1.复合模式:复合模式结合两个或以上的模式,组成一个解决方案,解决一再发原创 2022-02-14 18:13:42 · 369 阅读 · 0 评论 -
《headfirst设计模式》读书笔记11-代理模式
目录1. 远程代理2. 虚拟代理3. 保护代理1. 远程代理2. 虚拟代理3. 保护代理原创 2022-02-14 15:50:34 · 327 阅读 · 0 评论 -
《headfirst设计模式》读书笔记9-迭代器和组合模式
目录1. 封装遍历2. 定义迭代器模式3. 单一责任4. 定义组合模式5. 组合迭代器1. 封装遍历因为早餐和午餐的遍历方式不同,这样在遍历菜单时由于不同的遍历方式不方便。当我们对遍历进行封装就会对实现遍历的统一2. 定义迭代器模式通过类图我们可以知道:Iterator是一个接口,通过实现接口内的方法达到遍历的标准Aggregate是聚合的接口,通过对迭代器接口的引用实现对迭代器的解耦Client通过对两边接口的引用实现了集合和迭代器的解耦3. 单一责任如果允许一个类既原创 2022-02-12 17:12:52 · 618 阅读 · 0 评论 -
《headfirst设计模式》读书笔记7-适配器模式和外观模式
目录1. 定义适配器模式1.1 对象适配器1.1.1 DuckAdapter.h1.1.2 DuckAdapter.cpp1.2 类适配器2. 定义外观模式3. 总结1. 定义适配器模式适配器模式:将一个类的接口,转换成客户期望的另外一个接口。适配器让原本接口不兼容的类可以合作无间对象适配器就是使用组合,类适配器就是使用多重继承1.1 对象适配器1.1.1 DuckAdapter.h#include "Turkey.h"#include "Duck.h"class DuckAdapter原创 2022-02-11 20:43:23 · 528 阅读 · 0 评论 -
《headfirst设计模式》读书笔记10-状态模式
目录1. 糖果机2. 看图写代码2.1 GumballMachine.h2.2 GumballMachine.cpp3. 定义状态模式4. 部分源码4.1 State.h4.2 HasQuarterState.h4.3 HasQuarterState.cpp4.4 GumballMachine.h5.策略模式和状态模式的区别1. 糖果机这是一个状态图,糖果机有“糖果售完”,“有25分钱”,“没有25分钱”,“售出糖果”四个状态(其实还有一个检测是否售完的状态),我们也有四个动作“投入25分钱”,“退回原创 2022-02-11 15:48:46 · 296 阅读 · 0 评论 -
《headfirst设计模式》读书笔记8-模板方法模式
目录1. 认识模板方法2. 定义模板方法模式3. 钩子4. 好莱坞原则1. 认识模板方法2. 定义模板方法模式模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。3. 钩子钩子是一种被声明在抽象类中的方法,但只有空的或者默认的实现。钩子的存在,可以让子类有能力对算法的不同点进行挂钩。要不要挂钩,由子类自行决定问:当我创建一个模板方法时,怎么才能知道什么时候使用抽象方法,什么时候使用钩子呢?答:当原创 2022-02-11 15:46:42 · 265 阅读 · 0 评论 -
《headfirst设计模式》读书笔记6-命令模式
目录1. 例子-创建一组控制遥控器的API2. 定义命令模式3. 命令模式的更多用途3.1 队列请求3.2 日志请求4. 部分源码4.1 Command.h4.2 CeilingFan.h4.3 CeilingFanHighCommand.h4.4 CeilingFanHighCommand.cpp5. 总结1. 例子-创建一组控制遥控器的API2. 定义命令模式命令模式其实就是定义一个命令接口,然后具体命令实现这个接口,只暴露出命令的接口命令模式:将“请求”封装成对象,以便使用不同的请求、原创 2022-02-11 15:39:55 · 354 阅读 · 0 评论 -
《headfirst设计模式》读书笔记5-单件模式
目录1. 为什么需要单例模式2. 介绍单例模式3. 源码3.1 java3.2 C++3.2.1 Singleton.h3.2.2 Singleton.cpp4.处理多线程1. 为什么需要单例模式1.有一些对象其实我们只需要一个,比方说:线程池、缓存、对话框、处理偏好设置和注册表的对象、日志对象,充当打印机、显卡等设备的驱动程序的对象。事实上,这类对象只能有一个实例,如果制造出多个实例,就会导致许多问题产生,例如:程序的行为异常,资源使用过量,或者是不一致的结果。2.如果将对象赋值给一个全局变量,那么原创 2022-02-11 15:37:42 · 333 阅读 · 0 评论 -
《headfirst设计模式》读书笔记4-工厂模式
目录1. 简单工厂2. 工厂方法模式2.1 加盟披萨店2.2 工厂方法2.3 部分源码2.3.1 PizzaStore.h2.3.2 PizzaStore.cpp2.3.3 NYPizzaStore.h2.3.4 NYPizzaStore.cpp3. 抽象工厂3.1 原料家族3.2 定义抽象工厂模式3.3 部分源码3.3.1 PizzaIngredientFactory.h3.3.2 NYPizzaIngredientFactory.h3.3.3 VeggiePizza.h3.3.4 VeggiePizza原创 2022-02-11 15:36:55 · 410 阅读 · 0 评论 -
《headfirst设计模式》读书笔记3-装饰者模式
目录1. 模式的演进1.1 星巴兹咖啡1.2 第一次错误尝试-类爆炸1.3 第二次尝试-不易扩展1.4 装饰者模式2.总类图和部分源码2.1 总类图2.2 部分源码2.2.1 Beverage.h2.2.2 CondimentDecorator.h2.2.3 HouseBlend.h2.2.4 Milk.h2.2.5 关于cost() 和 getDescription()实现-委托、递归3.总结1. 模式的演进1.1 星巴兹咖啡咖啡店有多种咖啡,有多种调料根据咖啡不同,调料不同进行价格计算调料可原创 2022-02-11 15:35:24 · 434 阅读 · 0 评论 -
《headfirst设计模式》读书笔记2-观察者模式
目录1.模式的演进1.1 气象监测应用1.2 错误示范1.3 观察者模式2.总类图及实现2.1 总类图2.2 部分源码2.2.1 Subject.h2.2.2 WeatherData.h2.2.3 Observer.h2.2.4 CurrentConditionsDisplay.h3. 使用java内置的观察者模式4. setChanged()方法-标记状态改变5. 总结1.模式的演进1.1 气象监测应用气象监测应用:WeatherData对象:拥有方法:getTemperature()(获取温原创 2022-02-11 15:34:01 · 339 阅读 · 0 评论 -
《headfirst设计模式》读书笔记1-策略模式
目录1.模式的演进1.1 简单的模拟鸭子应用(例子)1.2 方法一:继承1.模式的演进1.1 简单的模拟鸭子应用(例子)1.2 方法一:继承原创 2022-02-11 15:26:32 · 476 阅读 · 0 评论