文档章节

head first设计模式概述

比雷
 比雷
发布于 2017/04/09 22:57
字数 811
阅读 8
收藏 1
点赞 0
评论 0

一、原则

封装变化

多用组合、少用继承

针对接口编程,不针对实现编程

为交互对象之间的松耦合设计而努力

类应该对扩展开发,对修改关闭

依赖抽象,不要依赖具体类

只和朋友交谈

别找我,我会找你

类应该只有一个改变的理由

二、设计模式

1、策略模式

封装可以互换的行为,并使用委托来决定要使用哪一个。

2、单件模式

确保只有一个对象呗创建

3、工厂模式、抽象工厂

由子类决定要创建的具体类是哪一个。如果创建对象的家族,使用抽象工厂

4、装饰者模式

包装一个对象,以提供新的行为

5、适配器模式

封装对象,并提供不同的接口

6、观察者模式

让对象能够在状态改变时被通知

7、命令模式

封装请求成为对象

8、模板方法

由子类决定如何实现一个算法中的步骤

9、迭代器模式、组合模式

在对象集合之中游走,而不暴露集合的实现。客户用一致的方式处理对象集合和单个对象,对象对客户透明。

10、状态模式

封装了基于状态的行为,并使用委托在行为之间切换。

11、代理模式

包装封装对象,以控制对此对象的访问。

12、外观模式

简化一群类的接口访问。

13、桥接模式、生成器、责任链、蝇量模式、解释器模式、中介者、备忘录、原型、访问者。

桥接模式:用于把抽象和实现解耦,实现二者独立变化。抽象里面使用接口对象,抽象子类和接口对象独立变化。

生成器:封装一个产品的构造过程。

责任链:为请求对象创造一个接收对象链,接收链的每个对象依次处理请求,直到请求被处理。

蝇量模式:享元模式,用于减少创建对象的数量,以减少内存占用和提高性能。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。

解释器模式:提供了评估语言的语法或表达式的方式,这种模式被用在 SQL 解析、符号处理引擎等。

中介者:用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。

备忘录:保存一个对象的某个状态,以便在适当的时候恢复对象。

原型:是用于创建重复的对象,同时又能保证性能。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。

访问者:使用了一个访问者类,它改变了元素类的执行算法,通过这种方式,元素的执行算法可以随着访问者改变而改变。

 

© 著作权归作者所有

共有 人打赏支持
比雷
粉丝 0
博文 10
码字总数 6579
作品 0
成都
程序员
设计模式之观察者模式(行为型)

模式定义 观察者模式(Observer Pattern):观察者模式定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖的对象皆得到通知并且被自动更新。不过观察者只能知道目标...

Javahih
昨天
0
0
Head First Design Pattern 读书笔记(1) 策略模式

Head First Design Pattern 读书笔记(1) Strategy Pattern 策略模式 这几天为了锻炼看英语文档的能力,开着有道硬着头皮看 《Head First Desgin Pattern》的原版书,顺便做下笔记,把里面提...

Tek_Eternal
2015/01/02
0
0
通过例子来理解巧妙绝伦的工厂模式

每次读设计模式的书,都感觉自己收获颇多。《Head First 设计模式》在学校的时候就买下了,刚开始初学java的时候,经常问别人,设计模式有没有用,设计模式的好处在哪里。后来参加工作,在工...

夕水溪下
2012/12/04
0
0
设计模式(Swift) - 3.观察者模式、建造者模式

上一篇 设计模式(Swift) - 2.单例模式、备忘录模式和策略模式中讲了三种常见的设计模式. 单例模式: 限制了类的实例化,一个类只能实例化一个对象,所有对单例对象的引用都是指向了同一个对象....

Dariel
07/01
0
0
观察者模式 vs 发布-订阅模式

我曾经在面试中被问道,“观察者模式和发布订阅模式的有什么区别?” 我迅速回忆起“Head First设计模式”那本书: 发布 + 订阅 = 观察者模式 “我知道了,我知道了,别想骗我” 我微笑着回答...

缪宇
06/29
0
0
javascript 设计模式之工厂(Factory)模式

工厂模式介绍 工厂模式是一个创建型的模式,主要就是创建对象。其中工厂模式又分为简单工厂模式和抽象工厂模式。简单工厂模式是通过工厂方法确定创建 对应类型的对象。抽象工厂模式是通过子类...

hlxiong
2014/04/14
0
0
《 Head First 》学习笔记:策略模式 (python实现)

学习<head first>,书中是用java 来实现,我用python比较多,所以在这里记下 用python实现的方法 。 书中策略模式的定义 : 策略模式 : 策略模式定义了算法族,分别封装起来,让它们之间可以...

Jbryan
2013/06/13
0
0
java设计模式-- 单例模式

在很久之前,也就是在大二暑假的时候,那时候看马士兵的视频教程中有提到很多的设计模式。 java的设计模式大致可以分为3大类,23种设计模式。 其中,创建型模式有5种:单例模式、建造者模式、...

爱学习的逃课君
2014/11/27
0
0
代理模式(Proxy Pattern):动态代理 - 最易懂的设计模式解析

前言 今天我来全面总结开发中最常用的设计模式 - 代理模式中的动态代理模式 其他设计模式介绍 1分钟全面了解“设计模式” 单例模式(Singleton) - 最易懂的设计模式解析 简单工厂模式(Sim...

Carson_Ho
04/09
0
0
【设计模式笔记】(十六)- 代理模式

一、简述 代理模式(Proxy Pattern),为其他对象提供一个代理,并由代理对象控制原有对象的引用;也称为委托模式。 其实代理模式无论是在日常开发还是设计模式中,基本随处可见,中介者模式中...

MrTrying
06/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Crontab作业时间设置

今天,遇到这么一个题目,周一到周五的9:00-16:59之间,每隔两分钟将某个命令运行一次。给的答案是: */2 9-16 * * 1-5 /usr/sbin/somecommand dosomething 乍一看,这个答案不对,应...

大别阿郎
3分钟前
0
0
ES17-JAVA API文档管理

1.保存文档 可以通过json工具把java对象转换成json字符串进行保存,也可以通过内置的帮助类直接构建json格式 /** * 获取客户端 * * @return */public static TransportClie...

贾峰uk
4分钟前
0
0
Python代码规范和命名规范

前言 Python 学习之旅,先来看看 Python 的代码规范,让自己先有个意识,而且在往后的学习中慢慢养成习惯 一、简明概述 1、编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头...

blackfoxya
7分钟前
0
0
联动滑动之一:NestScrollChild和NestedScrollingParent

NestScrollChild和NestedScrollingParent 吐槽一下开源中国竟然标题字数有限制 由于项目中使用了CoordinateLayout来解决联动以及实现炫酷的UI效果,那么必须就要研究一波源码了,毕竟知其然知...

JerryLin123
24分钟前
1
0
cloudera spark2.2 读写hbase

cloudera spark2.2 读写hbase 例子 host = 'bigdata-03,bigdata-05,bigdata-04'conf = { "hbase.zookeeper.quorum": host, "hbase.mapreduce.inputtable": "student1"}k......

osenlin
28分钟前
0
0
数据库规范化

转载自 一个小时学会MySQL数据库 地址:http://www.cnblogs.com/best/p/6517755.html 截取其中 1.4 部分 用于自己学习使用 感谢作者:张果 1.4、数据库规范化 经过一系列的步骤,我们现在终于...

十万猛虎下画山
29分钟前
0
0
ios逆向之工具篇

Reveal:查看任意app的UI结构 注:1.不越狱的手机,可以用Reveal来查看自己app的UI结构,不能查看其它app的结构。 2.越狱手机上可以查看任意app的UI结构。 IDA:反编译工具 从App Store下载的...

HeroHY
30分钟前
0
0
EOS区块链平台智能合约示例HelloWorld

我们将介绍一个使用EOS智能合约构建hello World的例子。 一般环境设置通过上一篇文章已经说明,这方面的问题大家可以看本博客上一篇文章,本文引用了官方EOS在Git上的示例。 运行nodeos 要通...

笔阁
32分钟前
1
0
Scrapy爬虫框架简单解析 

scrapy框架解析 Scrapy框架大致包括以下几个组件:Scrapy Engine、Spiders、Scheduler、Item Pipeline、Downloader; 组件 Scrapy Engine 这是框架的核心,负责控制数据流在整个系统的各个组...

zhujun2017
32分钟前
0
0
Vue之ref详解与实例

尽管存在 prop 和事件,有的时候你仍可能需要在 JavaScript 里直接访问一个子组件。为了达到这个目的,你可以通过 ref 特性为这个子组件赋予一个 ID 引用。ref可以加在父级组件上也可以加在子...

tianyawhl
41分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部