《设计模式》学习&理解&总结
教程地址:http://www.runoob.com/design-pattern/design-pattern-tutorial.html
教程书籍:《Android 设计模式解析与实战》
1. 单例模式
关键字:Singleton
使用目的:单例模式主要就是为了保证当前系统中只存在一个实例,供不同的地方调用。
使用情景:当一个对象的产生需要较多资源(如读取配置、产生其他依赖对象),且创建和销毁的性能又无法优化时。
使用实例:Universal-Image-Loader。
2. 原型模式
关键字:Cloneable、深拷贝&浅拷贝
使用目的:使用原型实例创建对象的种类,并通过复制这些原型创建新的对象。
使用场景:1. 类初始化需要非常多的资源,这些资源包括数据、硬件等资源,通过原型复制可以避免这些消耗 2. 通过new创建一个对象需要非常繁琐的数据准备或者权限访问,这时可以使用原型模式 3.一个对象需要给其他对象访问,且各个调用这可能修改其值的时候,可以通过原型模式复制多个对象供调用者使用,即保护性拷贝。
使用实例:Intent
3. 建造者模式
关键词:Builder
使用目的:将复杂对象的构建和表示分离。
使用场景:1. 需要相同方法不同执行顺序,产生的结果不同时。 2. 设计的产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用时。3. 当一个对象非常复杂,参数众多,且很多参数都有默认值的时候。
使用实例: AlertDialog、Universal-Image-Loader 的 ImageLoaderConfig 配置。
4. 工厂模式
关键字:Factory
使用目的:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行,解决接口选择的问题。
使用场景:我们明确地计划不同条件下创建不同实例时。
使用实例:厂商生产不同型号的产品、Java的类型集合框架(举例:List 与 ArrayList)
5. 抽象工厂模式
关键字:Super Factory (解释:超级工厂创建其他工厂,又称为其他工厂的工厂,在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。)
使用目的:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
使用场景:主要解决接口选择的问题。
使用实例:不同厂商生产不同品牌不同型号的产品。
0. 总结
本文主要是为了整理阅读此方面的教程后,整理出来的一些自己的思路的记录。根据阅读的进度,不断完善此文。因为设计模式本事就是一种编程思想的合集,所以后续也希望能慢慢将学习到的思想逐步融入到工作的编码中,写出来更有可读性且易扩展的代码。
《设计模式》学习&理解&总结的更多相关文章
- [置顶] 我的设计模式学习笔记------>Java设计模式总概况
设计模式的概念最早起源于建筑设计大师Alexander的<建筑的永恒方法>一书,尽管Alexander的著作是针对建筑领域的,但是他的观点实际上用用于所有的工程设计领域,其中也包括软件设计 ...
- python之路,Day24 常用设计模式学习
python之路,Day24 常用设计模式学习 本节内容 设计模式介绍 设计模式分类 设计模式6大原则 1.设计模式介绍 设计模式(Design Patterns) --可复用面向对象软件的基础 ...
- 设计模式学习--复合模式(Compound Pattern)
设计模式学习--复合模式(Compound Pattern) 概述 ——————————————————————————————————————————————————— 2013年8月4日<H ...
- 【设计模式+原型理解】第一章:使用Javascript来巧妙实现经典的设计模式
刚开始学习设计模式之前,我是没想说要学习设计模式的,我只是因为想学习JS中的原型prototype知识,一开始我想JS中为什么要存在原型这个东西?于是慢慢通过原型而接触到设计模式,后来发现我这个过程是 ...
- Java设计模式学习总结
设计模式基础学习总结 这篇总结主要是基于我之前设计模式基础系列文章而形成的的.主要是把重要的知识点用自己的话说了一遍,可能会有一些错误,还望见谅和指点.谢谢 更多详细内容可以查看我的专栏文章:设计模式 ...
- Java设计模式学习记录-模板方法模式
前言 模板方法模式,定义一个操作中算法的骨架,而将一些步骤延迟到子类中.使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤. 模板方法模式 概念介绍 模板方法模式,其实是很好理解的,具体 ...
- Java设计模式学习记录-GoF设计模式概述
前言 最近要开始学习设计模式了,以前是偶尔会看看设计模式的书或是在网上翻到了某种设计模式,就顺便看看,也没有仔细的学习过.前段时间看完了JVM的知识,然后就想着JVM那么费劲的东西都看完了,说明自己学 ...
- Java设计模式学习记录-迭代器模式
前言 这次要介绍的是迭代器模式,也是一种行为模式.我现在觉得写博客有点应付了,前阵子一天一篇,感觉这样其实有点没理解透彻就写下来了,而且写完后自己也没有多看几遍,上次在面试的时候被问到java中的I/ ...
- Java设计模式学习记录-命令模式
前言 这次要介绍的是命令模式,这也是一种行为型模式.最近反正没有面试机会我就写博客呗,该投的简历都投了.然后就继续看书,其实看书也会给自己带来成就感,原来以前不明白的东西,书上已经给彻底的介绍清楚了, ...
- Java设计模式学习记录-外观模式
前言 这次要介绍的是外观模式(也称为门面模式),外观模式也属于结构型模式,其实外观模式还是非常好理解的,简单的来讲就是将多个复杂的业务封装成一个方法,在调用此方法时可以不必关系具体执行了哪些业务,而只 ...
随机推荐
- 检查手机是否安装外置SD卡
/** * 检测是否安装外置SD卡 * * @return */ public boolean checkSDcard() { StorageList list = new StorageList(t ...
- 博客六--Tensorflow卷积神经网络的自主搭建
本人较懒也很忙,所以就不重复工作.连接我的开源中国博客查询:https://my.oschina.net/u/3770644/blog/3042523
- OO第一单元三次作业总结
写在前面 第一单元作业是针对输入的多项式进行格式合法判断,然后进行求导,结果长度优化,最后输出.三次难度递增,不断添加新的需求,总体感觉在实现方面没有多大困难(?),个人主要困扰环节是寻找自己未知bu ...
- java中的 java.util.concurrent.locks.ReentrantLock类中的lockInterruptibly()方法介绍
在java的 java.util.concurrent.locks包中,ReentrantLock类实现了lock接口,lock接口用于加锁和解锁限制,加锁后必须释放锁,其他的线程才能进入到里面执行, ...
- 每天五分钟,玩转Docker。-Day2
Day2 镜像仓库(Docker registry) Docker registry是存储容器镜像的仓库,用户可以通过Docker client 与Docker register 进行通信,以此来完成 ...
- Yarn的Linking dependencies特别慢的优化方法
通过以下方法,可以提升部分速度: 把项目文件夹添加进杀毒软件的白名单 把Yarn的缓存文件夹(yarn cache dir查看路径)添加进杀毒软件白名单 把Yarn的安装目录添加进杀毒软件白名单 把N ...
- 地磁应用中的低功耗无线数传模块xbee PRO S2C
地球上每一个地理坐标点,在一段时间内磁场强度是恒定的,当车辆这种铁磁物质经过这个点时,对这个点的磁场强度产生一个连续的扰动,通过磁传感器采样数据与初始采样数据(该点的地球磁场值)进行对比,其差值为车辆 ...
- Linux如何挂载U盘
1,以root用户登陆 先加载USB模块 modprobe usb-storage 用fdisk -l 看看U盘的设备 假如U盘是sda1 2,确定在 目录 /mnt 下建立了 文件夹 / ...
- jquery-能拖拽宽度的table
控件官方地址:http://www.bacubacu.com/colresizable/?utm_source=jquer.in&utm_medium=website&utm_camp ...
- Linux学习---自定义数据类型
struct 结构体 (地址递增) eg:struct myabc{ unsigned int a; unsigned int b; unsigned int c; unsigned int d; ...