随笔分类 - Head First 设计模式读书笔记
Head First设计模式(中文版)读书笔记
摘要:封装变化 即数学逻辑上的抽象,抽取出变化的部分 尽量使用组合而不使用继承 封闭开放原则 对修改关闭,对扩展开放 单一职责 即类应该只有一个改变的原因 依赖反转 | 好莱坞原则 高级组件不依赖低级组件 | 别来找我,我会找你 针对接口(抽象)编程,不针对实现(具体)编程 不依赖具体类,依赖抽象 即一个
阅读全文
摘要:status(状态模式) 上代码。。。女朋友起床了,没法安心写了。 测试输出: 状态模式和策略模式是很相像的,但不同的是,状态模式偏向于状态经常地改变,而策略仅仅是从是什么转换成像什么,也就是说一般而言,策略只会在对象初始化的时候委托一个具体的行为对象,而状态模式则是有n个行为对象在运行时不断切换。
阅读全文
摘要:迭代器(Iterator)与组合模式(Composite) 迭代器是我们经常接触的东西,当然,我们更习惯使用的是类似这样的代码: 而完整的迭代器是这样子的: 我们打开List接口的实现类ArrayList,可以发现里面有个私有类,其实就是实现了迭代器接口的一个类。 那么我们为什么要使用迭代器,或者在
阅读全文
摘要:行为型:Template(模板模式) 作为一个曾经爱好写文章,但是不太懂得写文章的人,我必须承认,开头是个比较难的起步。 模板模式常规定义:模板模式定义了一个算法步骤,把实现延迟到子类(这和抽象工厂是一样的,只不过模板模式强调的是算法步骤已经被定义好,我们只是开放某些算法步骤给子类去实现,以达到扩展
阅读全文
摘要:结构型:Adapter与Facade(适配器和外观模式) 一般作为阅读材料,首先想要明确的是我现在了解的设计模式的初衷,即为了解决什么问题。 适配器,如果有买过港版Iphone在内地使用的人应该会有三角大插头必须接一个转换器才能在一般的插座上使用的情况,当然这只是比较直观的感受。其实我们平时用的手机
阅读全文
摘要:创建型:Singleton(单例模式) 单例模式,或者称为元件模式。一般来说,在所有模式中,属于最小代码实现的翘楚。刚找工作那会,经常在笔试题遇到写出你知道的设计模式,基本上单例是必写的,不为啥,至少占地面积小。 一般我们有这两种实现: package top.gabin.oa.web.design
阅读全文
摘要:行为型:Command(命令模式) 命令模式: 目的:其实一般设计模式就是为了解耦。也没什么特别的,命令模式实际上就是将命令的请求者和命令的执行者解耦。 白话:领导说了,让把这个月的项目计划压缩到三个礼拜完成,还说了:"不管你用什么办法"。这句“不管你用什么办法”就是我们所说的解耦。我不需要关心你怎
阅读全文
摘要:创建型:Factory(工厂模式) 说到工厂,我们最新想到的应该是一堆堆的原料通过流水线组装成产品的场景吧? 其实对于一个程序员来讲,这个模式应该是很难不遇到的,特别是对于web开发的人员。为啥呢?因为这种场景在我们使用MVC的M层中是经常会遇到的。Hibernate的SessionFactory和
阅读全文
摘要:结构型:Decorator(装饰器模式) 装饰器模式:给爱用继承的人一个新的设计眼界。 装饰器有别于一般的继承方式,通常使用对象包装的方式,来赋予新的职责和功能。如JDK中的IO流,InputStream就是一个抽象类,用IDE检索一下,很容易可以看出。 装饰器模式旨在不修改原类代码(对修改关闭)的
阅读全文
摘要:行为型的设计模式 - Oberver(观察者模式) 一般而言,在我们生活中常见的观察者模式如:报纸订阅,电子商城中的降价通知 在web应用中,如电商最常见的有物流接口,如快递100收费版:主动推送物流更新状态给订阅的客户。 观察者的模式旨在解耦,消息持有者和对消息有兴趣的订阅者;通常也支持自行拉取信
阅读全文
摘要:对于一个在java领域基础还还没有那么扎实的人来说,或许谈框架和设计模式对我,都显得有些好高骛远。 但或许源于自身在工作中学习的一些坏习惯吧!我也不怎么过多地再去看算法与数据结构这样晦涩的东西。对于设计模式也仅仅是认为 -- 一个程序员所必须掌握的技能之一,对吧?我的认知还是如此浅薄,至少在此。 前
阅读全文

浙公网安备 33010602011771号