教程地址: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. 总结

本文主要是为了整理阅读此方面的教程后,整理出来的一些自己的思路的记录。根据阅读的进度,不断完善此文。因为设计模式本事就是一种编程思想的合集,所以后续也希望能慢慢将学习到的思想逐步融入到工作的编码中,写出来更有可读性且易扩展的代码。

《设计模式》学习&理解&总结的更多相关文章

  1. [置顶] 我的设计模式学习笔记------>Java设计模式总概况

    设计模式的概念最早起源于建筑设计大师Alexander的<建筑的永恒方法>一书,尽管Alexander的著作是针对建筑领域的,但是他的观点实际上用用于所有的工程设计领域,其中也包括软件设计 ...

  2. python之路,Day24 常用设计模式学习

    python之路,Day24 常用设计模式学习   本节内容 设计模式介绍 设计模式分类 设计模式6大原则 1.设计模式介绍 设计模式(Design Patterns) --可复用面向对象软件的基础 ...

  3. 设计模式学习--复合模式(Compound Pattern)

    设计模式学习--复合模式(Compound Pattern) 概述 ——————————————————————————————————————————————————— 2013年8月4日<H ...

  4. 【设计模式+原型理解】第一章:使用Javascript来巧妙实现经典的设计模式

    刚开始学习设计模式之前,我是没想说要学习设计模式的,我只是因为想学习JS中的原型prototype知识,一开始我想JS中为什么要存在原型这个东西?于是慢慢通过原型而接触到设计模式,后来发现我这个过程是 ...

  5. Java设计模式学习总结

    设计模式基础学习总结 这篇总结主要是基于我之前设计模式基础系列文章而形成的的.主要是把重要的知识点用自己的话说了一遍,可能会有一些错误,还望见谅和指点.谢谢 更多详细内容可以查看我的专栏文章:设计模式 ...

  6. Java设计模式学习记录-模板方法模式

    前言 模板方法模式,定义一个操作中算法的骨架,而将一些步骤延迟到子类中.使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤. 模板方法模式 概念介绍 模板方法模式,其实是很好理解的,具体 ...

  7. Java设计模式学习记录-GoF设计模式概述

    前言 最近要开始学习设计模式了,以前是偶尔会看看设计模式的书或是在网上翻到了某种设计模式,就顺便看看,也没有仔细的学习过.前段时间看完了JVM的知识,然后就想着JVM那么费劲的东西都看完了,说明自己学 ...

  8. Java设计模式学习记录-迭代器模式

    前言 这次要介绍的是迭代器模式,也是一种行为模式.我现在觉得写博客有点应付了,前阵子一天一篇,感觉这样其实有点没理解透彻就写下来了,而且写完后自己也没有多看几遍,上次在面试的时候被问到java中的I/ ...

  9. Java设计模式学习记录-命令模式

    前言 这次要介绍的是命令模式,这也是一种行为型模式.最近反正没有面试机会我就写博客呗,该投的简历都投了.然后就继续看书,其实看书也会给自己带来成就感,原来以前不明白的东西,书上已经给彻底的介绍清楚了, ...

  10. Java设计模式学习记录-外观模式

    前言 这次要介绍的是外观模式(也称为门面模式),外观模式也属于结构型模式,其实外观模式还是非常好理解的,简单的来讲就是将多个复杂的业务封装成一个方法,在调用此方法时可以不必关系具体执行了哪些业务,而只 ...

随机推荐

  1. XA-分布式事物

    1.什么是分布式事务 分布式事务就是指事务的参与者.支持事务的服务器.资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上.以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成 ...

  2. localhost换成127.0.0.1和本机IP打不开本地项目了的问题

    点击桌面右下角的小三角, iis express右键—>显示所有应用程序—>点击网站名称,配置文件路径,找到配置文件,以记事本打开, 按照configuration--system.app ...

  3. P1439 最长公共子序列(nlognLCS问题)

    模板 #include <iostream> #include <cstdio> using namespace std; ],loc[],b[],k,n,l,r,mid; i ...

  4. Oracle启动和停止

    概述 只有具备sysdba和sysoper系统特权的用户才能启动和关闭数据库. 在启动数据库之前应该启动监听程序,否则就不能利用命令方式来管理数据库,包括启动和关闭数据库. 虽然数据库正常运行,但如果 ...

  5. Java中的Integer和int

    Java中的Integer是引用类型,而int是基本类型.Integer是int的包装器类型. java中的基本类型有布尔类型boolean;字符类型char;整数类型byte,int,long,sh ...

  6. centos7 启动tomcat卡盾

    vim $JAVA_HOME/jre/lib/security/java.security securerandom.source=file:/dev/random 改为 securerandom.s ...

  7. sqlserver存储过程分页记录

    USE [HK_ERP]GO/****** Object: StoredProcedure [dbo].[GetPageBillsByShopID] Script Date: 2018/10/30 1 ...

  8. Linux---基础指令(一)

    https://www.linuxprobe.com/chapter-02.html  (Linux就要这么学) 一.执行查看帮助命令 date:date命令用于显示及设置系统的时间或日期,格式为“d ...

  9. 工作我们是专业的之css规范

    我一直认为专业是一种态度.不同于业余,专业代表无论技术高低都会遵守一定的规范,专业代表对某一领域不断的精益求精.专业就是比业余逼格高. 习惯书写规范 css 属性声明的顺序:Positioning(定 ...

  10. HDU 4609 3-idiots (组合数学 + FFT)

    题意:给定 n 条边,问随机选出 3 条边,能组成三角形的概率是多少. 析:答案很明显就是  能组成三角形的种数 / (C(n, 3)).现在的问题是怎么求能组成三角形的种数. 这个博客说的非常清楚了 ...