java设计模式教程

课程大纲

架构和计算机科学中的设计模式是记录特定专业领域中设计问题的解决方案的正式方法。 这个想法是由建筑师Christopher Alexander在建筑领域引入的,并已被修改为包括计算机科学在内的其他各个学科。

设计模式是针对软件设计中给定上下文中常见问题的通用可重用解决方案。 设计模式不是可以直接转换为源代码或机器代码的最终设计。 它是关于如何解决可以在许多不同情况下使用的问题的描述或模板。 模式是程序员设计应用程序或系统时可以用来解决常见问题的形式化最佳实践。

在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因,并了解何时以及如何应用模式中的每一个。

关于作者

Rohit Joshi是消费品行业的软件工程师。 他是Sun认证的Java程序员。 他曾在与不同领域相关的项目中工作。 他还参与系统分析和系统设计。 他主要从事Core Java和J2EE技术​​方面的工作,但在Javascript和Jquery等前端技术方面也有丰富的经验。

经验教训

在本课程中,您将被介绍设计模式。 您将了解什么是设计模式,为什么要在我们的代码中使用它们,以及如何选择和使用一种。 最后,描述了现有模式的分类。

通过一个真实的示例,您将学习应如何以及何时使用Adapter模式以及如何构造代码以实现它。 您将看到它如何为代码问题提供精巧的解决方案。

Facade模式使用Facade类使复杂的界面易于使用。 外观模式为子系统中的一组接口提供了统一的接口。 Facade定义了一个更高级别的界面,使子系统更易于使用。

Composite Pattern允许您将对象组合成树形结构以表示整个部分的层次结构,这意味着您可以创建由不同部分组成的对象树,但是可以将其视为一个整体。 Composite使客户能够统一地对待单个对象和对象组成,这就是Composite Pattern的目的。

桥接模式的目的是将抽象与其实现分离,以便二者可以独立变化。 它将抽象和实现置于两个不同的类层次结构中,以便可以独立地扩展它们。

当必须有一个类的一个实例,并且必须可以从一个著名的访问点访问客户端时,或者当唯一的实例可以通过子类扩展时,才可以使用Singleton模式。一个扩展实例,而无需修改其代码。

观察者模式是一种行为模式,它与对象之间的职责分配有关。 当抽象具有两个方面,一个依赖于另一个方面,对一个对象的更改需要更改其他对象,并且您不知道需要更改多少个对象或者何时一个对象应该能够通知另一对象时,应使用该方法。对象,而无需假设这些对象是谁。 换句话说,您不希望这些对象紧密耦合。

介体模式定义了一个对象,该对象封装了一组对象之间的交互方式。 介体通过防止对象之间显式地相互引用来促进松散耦合,并且它使您可以独立地更改其交互。 对象不是直接彼此交互,而是要求介体代表它们交互,这导致可重用性和松散耦合。 您将学习如何以及何时使用Mediator设计模式,以及如何构造代码以实现它。

代理模式为另一个对象提供代理或占位符,以控制对其的访问。 它带来了许多不同的变化。 一些重要的变化是远程代理,虚拟代理和保护代理。 在本课程中,我们将对这些变体有更多的了解,并将使用Java实现它们。 但是在我们这样做之前,让我们先了解更多有关代理模式的知识。 您将学习如何以及何时使用代理设计模式,以及如何构造代码以实现它。

责任链模式是一种行为模式,其中一组对象按顺序链接在一起,并提供一个责任(请求)以便由该组进行处理。 如果组中的对象可以处理特定请求,则可以处理该特定请求并返回相应的响应。 否则,它将请求转发到组中的后续对象。

Flyweight模式旨在控制对象的创建,其中应用程序中的对象非常相似且种类相似,并为您提供了基本的缓存机制。 它允许您为每种类型创建一个对象(此处的类型因该对象的属性而异),并且如果您请求具有相同属性的对象(已创建),它将返回相同的对象而不是创建新的对象之一。

构建器模式的目的是将复杂对象的构造与其表示分离,以便同一构造过程可以创建不同的表示。 这种类型的分离减小了物体的尺寸。 事实证明,该设计具有更高的模块化,每个实现都包含在不同的构建器对象中。 添加新的实现(即添加新的构建器)变得更加容易。

工厂方法模式为我们提供了一种封装具体类型的实例的方法。 Factory Method模式在称为工厂方法的指定方法内封装了选择和实例化适当类所需的功能。 工厂方法根据应用程序上下文和其他影响因素从类层次结构中选择适当的类。 然后,它实例化选定的类,并将其作为父类类型的实例返回。

抽象工厂(AKA Kit)是一种设计模式,它提供了一个接口,用于创建相关或相关对象的族,而无需指定其具体类。 抽象工厂模式将工厂方法模式的概念提高到了一个新的水平。 抽象工厂是一个类,提供了产生对象系列的接口。

原型设计模式用于指定要使用原型实例创建的对象的种类,并通过复制此原型来创建新对象。 其概念是复制现有对象,而不是从头开始创建新实例,这可能包括昂贵的操作。 现有对象充当原型,并包含对象的状态。

有时有必要记录对象的内部状态。 在实现检查点和“撤消”机制时,这是必需的,该机制使用户退出尝试性操作或从错误中恢复。 您必须将状态信息保存在某处,以便可以将对象还原到以前的状态。 但是对象通常封装了部分或全部状态,使得其他对象无法访问它,并且无法在外部保存。 暴露此状态将违反封装,这可能会损害应用程序的可靠性和可扩展性。 可以使用Memento模式完成此操作,而无需暴露对象的内部结构。

模板设计模式是一种行为模式,顾名思义,它提供了供用户使用的模板或算法结构。 用户无需改变算法的结构即可提供自己的实现。 模板模式定义了操作中算法的框架,将某些步骤推迟到子类。 模板方法允许子类在不更改算法结构的情况下重新定义算法的某些步骤。

状态设计模式允许对象在其内部状态更改时更改其行为。 该对象似乎将更改其类。 可以将对象的状态定义为在任何给定时间点的确切条件,具体取决于其属性或属性的值。 由类实现的方法集构成其实例的行为。 只要它的属性值发生变化,我们就说对象的状态发生了变化。

策略设计模式似乎是所有设计模式中最简单的,但它为代码提供了极大的灵活性。 即使与其他设计模式结合使用,该模式也几乎用于所有地方。 策略设计模式定义了一系列算法,将每个算法封装在一起,并使它们可互换。 策略使算法独立于使用该算法的客户端而变化。

命令设计模式是一种行为设计模式,有助于将调用者与请求的接收者解耦。 命令设计模式的目的是将请求封装为对象,从而使开发人员可以将具有不同请求,队列或日志请求的客户端参数化,并支持可撤销的操作。

口译员设计模式是一种重型模式。 这一切都是关于通过创建针对您的编程语言的解释器来组合自己的编程语言,或处理现有的编程语言。 给定一种语言,我们可以定义其语法的表示形式,以及使用该表示形式来解释该语言句子的解释器。

装饰器设计模式的目的是动态地将附加职责附加到对象上。 装饰器为子类提供了灵活的替代方案,以扩展功能。 该模式用于动态扩展对象的功能,而不必更改原始类的源或使用继承。 这是通过在实际对象周围创建一个称为Decorator的对象包装来完成的。

迭代器设计模式的目的是提供一种在不暴露其基础表示的情况下顺序访问聚合对象的元素的方法。 迭代器模式允许客户端对象以顺序的方式访问容器的内容,而无需了解其内容的内部表示形式。

访客设计模式为您提供了一种在不更改元素类的情况下,在对象上添加新操作的方法,尤其是当操作经常更改时。 访客设计模式的目的是表示要对对象结构的元素执行的操作。 访问者可让您定义新操作,而无需更改其所操作元素的类。

请确保转发此消息,让您的社交粉丝知道!

#Java设计模式教程–免费的大型课程! http://t.co/a6iVlNHFuE pic.twitter.com/XSeXbq4M5e

— Java Code Geeks(@javacodegeeks) ,2015年10月15日

翻译自: https://www.javacodegeeks.com/2015/09/java-design-patterns.html

java设计模式教程

java设计模式教程_Java设计模式教程相关推荐

  1. 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)

    黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...

  2. java 设计模式 示例_Java设计模式–示例教程

    java 设计模式 示例 Design Patterns are very popular among software developers. A design pattern is a well- ...

  3. java反射教程_Java反射教程

    java反射教程 在本教程中,我主要编写一些示例来介绍Java反射可以做什么. 希望它可以给您这个概念的概述. 请留下您的评论以寻求建议. 什么是反射? 简而言之,反射是程序在运行时检查和修改对象的结 ...

  4. java捕鱼设计_JAVA毕业设计教程:用swing实现捕鱼达人代码教程

    用JAVA SWING实现的捕鱼教程 开发工具:ECLIPSE 实现技术:JAVA SWING 用到的JAR包:xmlpull_1_1_3_4c.jar.dom4j-1.6.1.jar.jl1.0.j ...

  5. java joinpoint教程_Java的教程

    Java编程语言 Java编程语言中,左侧的导航栏(Java编程语言),可以快速定位文章的内容.这篇文章主要汇总以下: Java编程语言学习:Java的概述,Java的基础,Java面向对象的概念,J ...

  6. java外观设计修改_Java设计模式之外观模式和装饰器模式的设计(精选)

    前言 本篇来学习下结构型模式的外观模式和装饰器模式. 外观模式 简介 外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接 ...

  7. java 反射模式_java 设计模式——反射机制的应用

    Java反射机制是指:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为Java语言 ...

  8. java 2d 绘图教程_Java标准教程:Java 2D绘图--第2章 从绘图开始

    Java标准教程:Java 2D绘图--第2章从绘图开始 Java 2D API是强大并且复杂的.然而,大多数Java 2D API只用到了封装在java.awt.Graphic类中的功能的自己.本节 ...

  9. java批处理 异常处理_Java批处理教程

    java批处理 异常处理 在当今世界,互联网已经改变了我们的生活方式,其主要原因之一是大部分日常琐事都使用互联网. 这导致大量数据可用于处理. 其中涉及大量数据的一些示例是处理工资单,银行对帐单,利息 ...

最新文章

  1. spring mvc velocity 配置备忘
  2. Django 分页器模板
  3. python【洛谷算法题单-搜索】P1605 迷宫
  4. Cisco pix515配置实例
  5. ubuntu中使用VsCode+Eigen创建Eiegn应用程序
  6. H3C交换机配置学习随笔
  7. golang文件夹位置判断
  8. 学术 | 不爱科研,只为当大学老师而读博,这种做法对吗?
  9. php 二位数组排序
  10. 水滴互助 :网络互助「创新者窘境」如何打破?
  11. Day 177/200 React 颜色选择器
  12. 通道抠图蒙版置入背景(抠图换背景)
  13. 任意文件读取与下载漏洞
  14. 实验十二 HTTP 协议分析实验
  15. Acrobat 删除pdf页面
  16. 为什么⽤线程池?解释下线程池参数?
  17. vscode安装和配置ESLint
  18. 28岁从事功能测试6年被辞,面试2个月还没到工作···
  19. 史蒂夫·乔布斯(简介)
  20. android 采集音频输出,Android系统分析之Audio音频流, 音频策略, 输出设备之间的关系...

热门文章

  1. P6378-[PA2010]Riddle【2-SAT】
  2. jzoj3500-物语【最短路】
  3. nssl1319-埃雷萨拉斯寻宝【SPFA,建图】
  4. P2014-选课【树形dp,背包】
  5. 小 X 的 AK 计划
  6. 线段树动态开点区间加区间求和
  7. 2018-2019 ACM—ICPC SEERC 题解
  8. Spark SQL(一)之简介
  9. 汇编语言(二十五)之成绩分段统计
  10. 收割百度、阿里、腾讯、头条、网易华为等大厂Offer的面经