我的设计模式学习笔记------>Java设计模式总概况

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



设计模式(Design Pattern)的概念最早起源于建筑设计大师Alexander的《建筑的永恒方法》一书,尽管Alexander的著作是针对建筑领域的,但是他的观点实际上用用于所有的工程设计领域,其中也包括软件设计领域。在《建筑的永恒方法》一书中是这样描述模式的:

模式是一条由三个部分组成的通用规则:他表示一个特定环境、一类问题和一个解决方案之间的关系。每一个模式描述了一个不断重复发生的问题,以及该问题解决方案的核心设计。

软件领域的设计模式也有类似的定义:设计模式是对处于特定环境下,经常出现的某类软件开发的问题的一种相对成熟的设计方案。

所有资深软件设计师,他们积累了足够的经验,这些经验可以让他们快速、优雅地解决软件设计开发中的大量重复问题。而设计模式的最终目的就是帮助人们利用软件设计师的集成经验,从而设计出更加优秀的软件。

当然,写此文只是记录本人学习设计模式过程中的一点感悟,希望对读者有所帮助。实际上,设计模式的理解必须建立以足够的代码积累量作为基础。

根据Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides几个软件设计模式的奠基人的说法(他们的著作就是《Design Patterns:Elements of Reusable Object-Oriented Software》,中文名是《设计模式:可复用面向对象软件的基础》),设计模式常常被分成如下三类:

 创建型模式 :创建对象时,不再由我们直接实例化对象,而是根据特定场景,由程序来确定创建对象的方式,从而保证更大的性能、更好的架构优势。

  1.       抽象工厂模式(AbstractFactory)
  2.       工厂方法模式(FactoryMethod)
  3.       单例模式(Singleton)
  4.       创建者模式(Builder)
  5.       原型模式(Prototype)
   结构性模式:用于帮助将多个对象组织成更大的结构。
  1.       适配器模式(Adapter)
  2.       桥接模式(Bridge)
  3.       组合模式(Composite)
  4.       装饰模式(Decorator)
  5.       外观模式(Facade)
  6.       享元模式(Flyweight)
  7.       代理模式(Proxy)
   行为型模式:用于帮助系统间各对象的通信,以及如何控制复杂系统中的流程。
  1.       责任链模式(Chain of Responsibility)
  2.       命令模式(Command)
  3.       解释器模式(Interpreter)
  4.       迭代器模式(Iterator)
  5.       中介者模式(Mediator)
  6.       备忘录模式(Memento)
  7.       状态模式(State)
  8.       策略模式(Strategy)
  9.       模板方法模式(TemplateMethod)
  10.       观察者模式(Observer)
  11.       访问者模式(Visitor)

下面看一张本人用思维导图软件做的设计模式的总概况图:

说实话设计模式不是一般的难:

  • 第一难:需要你有真正的OO水平,有大量的编码及设计基础。
  • 第二难:难以在工作中真正实践全部23种设计模式,无实践就无法真正理解。很少系统需要用到设计模式,或者只用到很少的一部分。我们这些软件开发人员,大部分都是在做数据库的CRUD的工作,设计模式难有用武之地。
  • 第三难:学习资料要么太深奥难懂,要么就是太肤浅了。
  • 第四难:你以为你懂了,其实你没懂!设计模式学习过程是迂回前进的。
  • 第五难:找不到高手与你沟通!

设计模式绝对不是纸上谈兵的知识,关看书就以为自己懂了,那只是井底之蛙之见,设计模式绝对是从实践中来到实践中去的!

如果编码经验甚少,也不太可能能理解好设计模式,但凡软件设计能力强的人编码功底都是相当扎实的。

如果没有能深刻理解面向对象,也不太可能理解好设计模式。


按对设计模式的熟悉程度,我划分了一下几个档次:

  1. 不知道:没听说过,或者只知道名字。
  2. 能说:能简单说出该设计模式的用途。
  3. 能画:能准确地画出该设计模式的类图,或者画出实际应用的类图。
  4. 能写:能写出实现该设计模式的实例代码。
  5. 会用:能在实际工作中运用设计模式。
  6. 活用:很熟练,能在工作中创造性地应用设计模式,可以指导别人应用设计模式工作。

如何学习设计模式?
  1. 要用真正面向对象的语言来编程,这样会加速你对面向对象、设计模式的理解
  2. 找浅显的设计模式来学习:《Design Patterns:Elements of Reusable Object-Oriented Software》这本大作好是好,但是很难看得懂,《Head First 设计模式》容易入门,《研磨设计模式》也很不错。
  3. 在设计工作中多用类图:类图关看是远远不够的,要多多实践,通过类图来提高自身的OO能力。
  4. 多想具体的应用例子,并写出实例代码。
  5. 多提问,敢于挑战传统想法。


==================================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址http://blog.csdn.net/ouyang_peng

==================================================================================================

相关文章
|
25天前
|
设计模式 消息中间件 搜索推荐
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
|
1月前
|
设计模式 Java 数据库连接
Java编程中的设计模式:单例模式的深度剖析
【10月更文挑战第41天】本文深入探讨了Java中广泛使用的单例设计模式,旨在通过简明扼要的语言和实际示例,帮助读者理解其核心原理和应用。文章将介绍单例模式的重要性、实现方式以及在实际应用中如何优雅地处理多线程问题。
38 4
|
2月前
|
设计模式 Java 程序员
[Java]23种设计模式
本文介绍了设计模式的概念及其七大原则,强调了设计模式在提高代码重用性、可读性、可扩展性和可靠性方面的作用。文章还简要概述了23种设计模式,并提供了进一步学习的资源链接。
54 0
[Java]23种设计模式
|
1月前
|
Java 数据库连接 API
Spring 框架的介绍(Java EE 学习笔记02)
Spring是一个由Rod Johnson开发的轻量级Java SE/EE一站式开源框架,旨在解决Java EE应用中的多种问题。它采用非侵入式设计,通过IoC和AOP技术简化了Java应用的开发流程,降低了组件间的耦合度,支持事务管理和多种框架的无缝集成,极大提升了开发效率和代码质量。Spring 5引入了响应式编程等新特性,进一步增强了框架的功能性和灵活性。
49 0
|
1月前
|
设计模式 JavaScript Java
Java设计模式:建造者模式详解
建造者模式是一种创建型设计模式,通过将复杂对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。本文详细介绍了建造者模式的原理、背景、应用场景及实际Demo,帮助读者更好地理解和应用这一模式。
|
2月前
|
设计模式 Java Kotlin
Kotlin学习笔记 - 改良设计模式 - 迭代器模式
Kotlin学习笔记 - 改良设计模式 - 迭代器模式
33 2
|
2月前
|
设计模式 JavaScript Scala
Kotlin学习笔记 - 改良设计模式 - 责任链模式
Kotlin学习笔记 - 改良设计模式 - 责任链模式
47 0
|
2月前
|
设计模式 Java Kotlin
Kotlin 学习笔记- 改良设计模式 - 装饰者模式
Kotlin 学习笔记- 改良设计模式 - 装饰者模式
32 0
|
2月前
|
Java 数据安全/隐私保护
java学习笔记(基础习题)
java学习笔记(基础习题)
46 0
|
2月前
|
Java 程序员 开发工具
java学习笔记
java学习笔记
48 0