前言

大约在一年前学习过一段时间的设计模式,但是当时自己的学习方式比较低效,也没有深刻的去理解、运用所学的知识.

所以现在准备系统的再重新学习一遍,写一个关于设计模式的系列博客.

废话不多说,正文开始.

1. 设计模式是什么

设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性.

2. 学习设计模式的好处

  1. 提高开发效率,使用设计模式可以避免我们做一些重复工作
  2. 减少开发人员的沟通成本.
  3. 阅读源码,更深入的理解使用的框架和类库
  4. 自己写出灵活性高、易维护、易扩展和易复用的代码

3. 设计模式的分类

根据用途设计模式可分为创建型、结构型和行为型三种

3.1 创建型设计模式

创建型模式是处理对象创建的设计模式,试图根据实际情况使用合适的方式创建对象。

5种创建型设计模式(简单工厂模式不算):

3.2 结构型设计模式

结构型设计模式是借由一以贯之的方式来了解元件间的关系,以简化设计.

一以贯之: 指做人做事,按照一个道理,从一而终,出自《论语·里仁》。

注: 以上是百科的解释,一以贯之是我自己百度贴上的,又能学到技术又能学到成语,看这篇博客赚翻了有没有.

七种结构型设计模式:

  • 适配器模式
  • 桥接模式
  • 组合模式
  • 装饰者模式
  • 外观模式
  • 享元模式
  • 代理模式

3.3 行为型设计模式

行为型设计模式是用来识别对象之间的常用交流模式并加以实现。如此,可在进行这些交流活动时增强弹性.

十一种行为型设计模式:

  • 职责链模式
  • 命令模式
  • 解释器模式
  • 迭代器模式
  • 中介者模式
  • 备忘录模式
  • 观察者模式
  • 状态模式
  • 策略模式
  • 模板方法模式
  • 访问者模式

4. 学习设计模式的一些其他准备工作

学习设计模式还需要一些其他的知识储备,例如:

  • UML类图相关知识(部分示例使用UML类图演示,如没有相关知识,请移步我的上一篇博客 UML类图简介)
  • 了解面向对象设计原则

5. 面向对象设计原则

移步 -> 面向对象设计原则

6. 主要参考文献

大话设计模式

Java设计模式

7. 代码&类图下载地址

github地址

Java设计模式学习笔记(一) 设计模式概述的更多相关文章

  1. java核心技术学习笔记之一程序设计概述

    Java 核心技术之一程序设计概述 一.   Java语言的特点 简单行 :取经于C++,排除了C++不常用的指针.结构等,增加垃圾回收. 面向对象:与C++不同是单继承,但是可以继承多接口.完全面向 ...

  2. 23种设计模式+J2EE设计模式学习笔记-初识设计模式

    设计模式简介: 设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验的总结.(个人理解:设计模式是不关乎业务,逻辑实现,针对普遍问题的一种解决方案). 设计模式的类型: 传统23种设 ...

  3. Java设计模式学习笔记(五) 单例模式

    前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 使用单例模式的原因 以Windows任务管理器为例,在Windows系统中,任务管理器是唯 ...

  4. Java设计模式学习笔记(四) 抽象工厂模式

    前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 抽象工厂模式概述 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问 ...

  5. java设计模式学习笔记--接口隔离原则

    接口隔离原则简述 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应建立在最小的接口上 应用场景 如下UML图 类A通过接口Interface1依赖类B,类C通过接口Interface1依赖类 ...

  6. java设计模式学习笔记--单一职责原则

    单一职责原则注意事项和细节 1.降低类的复杂度,一个类只负责一项职责 2.提高可读性,可维护性 3.降低变更引起的风险 4.通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单 ...

  7. java设计模式学习笔记--浅谈设计模式

    设计模式的目的 编写软件的过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战.设计模式为了让程序具有更好的 1.代码重用性(即:相同功能的代码,不用多次编写) ...

  8. Java设计模式学习笔记(二) 简单工厂模式

    前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 正文开始... 1. 简介 简单工厂模式不属于GoF23中设计模式之一,但在软件开发中应用也较为 ...

  9. Java设计模式学习笔记(三) 工厂方法模式

    前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 简介 上一篇博客介绍了简单工厂模式,简单工厂模式存在一个很严重的问题: 就是当系统需要引入 ...

随机推荐

  1. Bootstrap 缩略图 警告框

    @{    Layout = null;}<!DOCTYPE html><html><head>    <meta name="viewport&q ...

  2. .NET中System.Diagnostics.Stopwatch、System.Timers.Timer、System.Threading.Timer 的区别

    1.System.Diagnostics.Stopwatch Stopwatch 实例可以测量一个时间间隔的运行时间,也可以测量多个时间间隔的总运行时间. 在典型的 Stopwatch 方案中,先调用 ...

  3. Github上的watch、star和fork分别是什么意思

    Github上的watch.star和fork分别是什么意思呢? 1.watch可以用来设置接收邮件提醒 2.如果想持续关注该项目就star一下 3.如果想将项目拷贝一份到自己的账号下就fork fo ...

  4. JS引用路劲为什么在前面加上两个斜杠

    原文:JS引用路劲为什么在前面加上两个斜杠 //表示同协议,一般现在用在https跨域名地址情况下.比如第三方统计代码的引入,用//就不用很麻烦地区分https还是http,也不用担心https下降到 ...

  5. QuickReport根据每行的内容长度动态调整DetailBand1的行高

    procedure TPosPubFactureRep.DetailBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); v ...

  6. 个人博客链接英语MP3提示盗链

    今天想在wordpress博客中添加一个MP3进行播放,但是遇到了两个问题. 第一是页面无法正常加载播放器所需要的组件,获取资源返回404错误,查看之后发现时找不到wordpress中的一个svg文件 ...

  7. 获取UWP配置文件中的版本信息

    原文:获取UWP配置文件中的版本信息 在一般的软件中,我们都会显示当前软件的版本信息.以前作者都是在发版的时候修改一下UWP的配置文件中的版本信息和软件中的版本信息.但是每次这样很麻烦,有时间忘记修改 ...

  8. Delphi 编写ActiveX控件(OCX控件)的知识和样例(有详细步骤)

    一.ActiveX应用情况简介: ActiveX控件也就是一般所说的OCX控件,它是 ActiveX技术的一部分.ActiveX是微软公司推出的基于组件对象模型COM的技术,包括对Windows 32 ...

  9. gcc与vs2013的三个charset编译选项

    以gcc为例,它有三个命令选项:-finput-charset=gb18030-fexec-charset=utf-8-fwide-exec-charset=utf32顾名思议,input-chars ...

  10. Qt中加载Libevent静态库(通过reimp和rs两条语句将lib转为a)

    文章来源:http://blog.sina.com.cn/s/blog_731bf4c90102wnpr.html 本文仅是个人经验总结,若有错误欢迎指教! 最近要做一个跨平台的项目,同时也涉及到网络 ...