Head First 设计模式 —— 15. 与设计模式相处
模式
是在某情境(context)下,针对某问题的某种解决方案。 P579
- 情景:应用某个模式的情况
- 问题:你想在某情境下达到的目标,但也可以是某情境下的约束
- 解决方案:一个通用的设计,用来解决约束、达到目标
模式必须应用于一个重复出现的问题。 P581
思考题
配对下列模式和描述: P587
- 装饰器模式:包装一个对象,以提供新的行为
- 状态模式:封装了基于状态的行为,并使用委托在行为之间切换
- 迭代器模式:在对象的集合之中游走,而不暴露集合的实现
- 外观模式:简化一群类的接口
- 策略模式:封装可以互换的行为,并使用委托来决定要使用哪一个
- 代理模式:包装对象,以控制对此对象的访问
- 工厂方法模式:由子类决定要创建的具体类是哪一个
- 适配器模式:封装对象,并提供不同的接口
- 观察者模式:让对象能够在状态改变时被通知
- 模板方法模式:由子类决定如何实现一个算法中的步骤
- 组合模式:客户用一致的方式处理对象集合和单个对象
- 单例模式:确保有且只有一个对象被创建
- 抽象工厂模式:允许客户创建对象的家族,而无需指定他们的具体类
- 命令模式:封装请求成为对象
模式分类
创建型:涉及到将对象实例化,这类模式都提供一个方法,将客户从所需要的实例化的对象中解耦P590
行为型:涉及到类和对象如何交互及分配职责P590
结构型:可以让你把类或对象组合到更大的结构中 P590
本书中未提到的模式在附录中有简要介绍,感觉简单两页还是难以理解(我才不会说第一个都看得有点懵),等以后看《设计模式》再继续学习。先把学到的这些巩固一下并进行实践。
在写本次读书笔记的时候才大量用到图片,以前都是保存先手动到图床文件夹的笔记中,然后获取图片链接,最后粘贴到 md笔记的指定位置。这个用多了就感觉每次挺麻烦,还需要打开切换到不同的笔记,就想模拟手动操作自动完成这一些列操作,最后解析了大部分 api 后,就直接就“替换了” md笔记里上传图片的会员功能。最后整理成 tampermonkey 脚本,详见 有道云笔记增强 。
本文首发于公众号:满赋诸机(点击查看原文) 开源在 GitHub :reading-notes/head-first-design-patterns
Head First 设计模式 —— 15. 与设计模式相处的更多相关文章
- c++设计模式15 --组合模式
今天研究了一下设计模式15 组合模式 本人是菜鸟一枚,所以一开始完全不懂组合究竟是什么意思.先上图一张,树形结构图: 文档说,如果想做出这样的结构,通常考虑组合模式.那是为什么呢?现在让我们看一下组合 ...
- C#设计模式(0)-认识设计模式
简介 世界上本没有路,走的人多了也就成了路:世界上本来没有设计模式.用的人多了,也就成了设计模式.所以,我们不是严格按照它的定义去执行,可以根据自己的实际场景.需求去变通.领悟了其中的思想,实现属于自 ...
- javaScript设计模式-创建型设计模式
我们大家一听到设计模式就感觉设计模式是一个高端的东西,到底什么是设计模式呢?其实设计模式也就是我们的前辈在写代码的时候遇到的问题,提出的解决方案,为了方便人与人之间的交流,取了个名字,叫做设计模式. ...
- GOF提出的23种设计模式是哪些 设计模式有创建形、行为形、结构形三种类别 常用的Javascript中常用设计模式的其中17种 详解设计模式六大原则
20151218mark 延伸扩展: -设计模式在很多语言PHP.JAVA.C#.C++.JS等都有各自的使用,但原理是相同的,比如JS常用的Javascript设计模式 -详解设计模式六大原则 设计 ...
- C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginator插件和knockout.js完成分页功能 图片在线裁剪和图片上传总结 循序渐进学.Net Core Web Api开发系列【2】:利用Swagger调试WebApi
C#设计模式总结 一. 设计原则 使用设计模式的根本原因是适应变化,提高代码复用率,使软件更具有可维护性和可扩展性.并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则.开放封闭原则.里氏代替 ...
- [Head First设计模式]生活中学设计模式——迭代器模式
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...
- [Head First设计模式]生活中学设计模式——组合模式
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...
- [Head First设计模式]生活中学设计模式——外观模式
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...
- [Head First设计模式]生活中学设计模式——状态模式
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...
随机推荐
- STL——容器(List)List 的数据元素插入和删除操作
push_back(elem); //在容器尾部加入一个元素 1 #include <iostream> 2 #include <list> 3 4 using namespa ...
- 一文入门Redis
一文入门Redis 目录 一文入门Redis 一.Redis简介 二.常用数据类型 1.String(字符串) 2.Hash(哈希) 3.List(列表) 4.Set(集合) 5.Zset(有序集合) ...
- 【译】理解Rust中的Futures (一)
原文标题:Understanding Futures In Rust -- Part 1 原文链接:https://www.viget.com/articles/understanding-futur ...
- css样式规则
在css样式规则中: 1.选择器用于指定CSS样式作用的HTML对象,花括号内是对该对象设置的具体样式. 2.属性和属性值以"键值对"的形式出现. 3.属性是对指定的对象设置的样式 ...
- [打基础]luogu1957口算练习题——字符串基本操作
题意:第一行给出数据组数n,之后n行每行给出三个或两个数据,若给三个数据,则第一个数据用单个字符a/b/c分别表示+/-/*运算,后两个数表示参与运算的数字,若给两个数据延续之前的运算 要求对每行数据 ...
- PHP 直接使用html输出excel
1 <?php 2 header("Cache-Control:public"); 3 header("Pragma:public"); 4 5 head ...
- HTC Vive使用WebVR的方法以及启用后头显无画面的解决方法
1.下载支持WebVR的浏览器. 笔者使用的是HTC Vive,故下载了Firefox的Nightly版本[下载地址]. 2.Nightly 开启WebVR的步骤[引用自Mozilla VR] 1.从 ...
- python scipy 求解简单线性方程组和fmin求函数最小值
###这是一个利用内置函数求最小值#####def func(x): return x ** 2 - 2 *x x = 1 func(x) opt.fmin(func ,x)## 用scipy求解线性 ...
- 记一次Ajax请求MVC调优
问题描述 ASP.NETMVC项目,编辑页面赋值操作,ajax请求很慢. 对同一个控制器有2个请求 一个为获取该表的树形结构数据(绑定下拉框) 一个为获取某实体的单条记录(编辑操作) 排查过程 数据库 ...
- 常见编译器EOP
delphi: 55 PUSH EBP 8BEC MOV EBP,ESP 83C4 F0 ADD ESP,-10 B8 A86F4B00 ...
