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设计模式教程