《设计模式》学习&理解&总结
教程地址: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设计模式学习记录-外观模式
前言 这次要介绍的是外观模式(也称为门面模式),外观模式也属于结构型模式,其实外观模式还是非常好理解的,简单的来讲就是将多个复杂的业务封装成一个方法,在调用此方法时可以不必关系具体执行了哪些业务,而只 ...
随机推荐
- 机器学习(五)--------正则化(Regularization)
过拟合(over-fitting) 欠拟合 正好 过拟合 怎么解决 1.丢弃一些不能帮助我们正确预测的特征.可以是手工选择保留哪些特征,或者使用一 些模型选择的算法来帮忙(例如 PCA) 2.正则化. ...
- windows下Docker的安装
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...
- RestSharp发送请求得到Json数据
NUGET安装:RestSharp code: public string Post(string url, string content) { string contentType = " ...
- 关于Android UI 优化
之前项目为了同时兼容tv和手机端的UI,使用了百分比布局来动态计算控件的宽高,这种适配方案只关心屏幕的宽高(分辨率),与屏幕的像素密度无关. 在新的项目里也使用了这种方案.但是由于项目的运行硬件计算能 ...
- 路飞ORM练习
# a.查看所有学位课并打印学位课名称以及授课老师 # degree_list = DegreeCourse.objects.all().values('name', 'teachers__name' ...
- 字符模式console usb串口安装centos
黄色部分是使用console口安装centos需要使用text模式,可以参考前文,同时镜像路径也是需要指定的,来自/dev/sda4 U盘 setparams 'Install CentOS 7' l ...
- 服务管理之mysql基础
目录 mysql基础 1. 关系型数据库介绍 1.1 数据结构模型 1.2 RDBMS专业名词 2. mysql安装与配置 2.1 mysql安装 2.2 mysql配置 3. mysql的程序组成 ...
- 利用WMITool解决Windows10 浏览器主页被hao123劫持问题
利用Windows10 激活工具KMS10_1025激活系统之后会出现首页 被劫持的问题 解决办法如下 1.下载wmi tool 连接地址 链接: https://pan.baidu.com/s/1g ...
- JSP·随笔
1.简介 > HTML - HTML擅长显示一个静态的网页,但是不能调用Java程序. > Servlet - Servlet擅长调用Java程序和后台进 ...
- js 中 (function($){...})(jQuery) 含义
js中定义函数常用写法是 function name(arg){ //arg则是匿名函数的参数. //... } 调用函数时的写法是: name(arg); ===================== ...