设计模式

时间:2019-11-17 21:12:06   收藏:0   阅读:125

技术图片

设计模式

顾名思义,设计模式是设计软件时最常见(和最常见)的问题的解决方案。这些模式大多是“进化的”而不是“发现的”。这些设计模式总结了许多专业人士的大量学习成果。这些模式都没有强迫您执行任何东西。它们只是在特定情况下以特定方式解决特定问题的指南。代码实施是您的责任。

既然如此重要,让我们更详细地学习这些设计模式(在java上下文中)。

1.创新设计模式

创建模式通常用于代替直接实例化构造函数。它们使创建过程更具适应性和动态性。特别是,对于创建哪些对象、如何创建这些对象以及如何初始化它们,它们可以提供很大的灵活性。

设计模式的名字 用途
建造者 构建器设计模式是构建复杂对象的另一种方法
原型 原型设计模式用于应用程序需要创建大量类的实例的情况,这些实例的状态几乎相同或相差很小。
工厂模式 当涉及复杂的对象创建步骤时,工厂设计模式最合适。为了确保这些步骤是集中的,并且不暴露于组成类
抽象工厂模式 每当我们需要对使用工厂模式创建的一组工厂进行另一个抽象级别时,就会使用抽象工厂模式。
单例模式 单例模式允许应用程序在每个JVM中只有一个类实例。

2.结构设计模式

结构设计模式向我们展示了如何以灵活和可扩展的方式将系统的不同部分粘合在一起。这些模式帮助我们确保当其中一个部分发生更改时,整个应用程序结构不需要更改。

设计模式的名字 用途
适配器模式 适配器将类的接口转换为客户端所期望的另一个接口。它让那些由于接口不兼容而无法协同工作的类协同工作。
桥模式 桥接设计模式用于将一个类解耦为两个部分——抽象和它的实现——以便两者在未来可以在不互相影响的情况下发展。它增加了类抽象和它的实现之间的松散耦合
复合模式 复合设计模式有助于将对象组合成树结构来表示整个零件层次结构。Composite允许客户端统一处理单个对象和对象的组合。
装饰器模式 装饰器设计模式用于向类的特定实例添加其他特性或行为,而不修改同一类的其他实例。
外观设计模式 外观设计模式为子系统中的一组接口提供了统一的接口。外观设计定义了一个更高级的接口,使子系统更易于使用。
享元模式 享元设计模式允许使用对象共享来有效地支持大量细粒度对象。享元是一个可以同时在多个上下文中使用的共享对象。flyweight在每个上下文中充当独立的对象。
代理模式 在代理设计模式中,代理对象为另一个对象提供一个代理或占位符来控制对它的访问。代理主要用于实现延迟加载相关的用例,在这些用例中,我们不想创建完整的对象,直到真正需要它。

3.行为设计模式

行为模式抽象了我们希望对采取该操作的对象或类采取的操作。通过更改对象或类,我们可以更改使用的算法、受影响的对象或行为,同时仍然保留客户端类的基本接口。

设计模式的名字 用途
责任链设计模式 责任链设计模式通过将接收对象以链的形式链接在一起,为多个对象提供了处理请求的机会。
命令设计模式 命令设计模式有助于将业务逻辑抽象为我们称为命令的离散操作。这些命令对象有助于两个类之间的松散耦合,其中一个类(调用者)将调用另一个类(接收者)上的方法来执行业务操作。
解释器模式 解释器模式指定如何以编程方式评估一种语言的句子。它有助于为一种简单的语言建立语法,以便可以解释该语言中的句子。
迭代器模式 迭代器模式提供了一种方法,可以按顺序访问聚合对象的元素,而无需公开其底层表示。
中介模式 中介模式定义一个对象,该对象封装了一组对象的交互方式。中介体通过阻止对象显式地相互引用来促进松散耦合,并允许我们独立地改变它们之间的交互。
记忆模式 记忆模式用于将对象的状态恢复到先前的状态。也称为快照模式。
观察者模式 观察者模式定义了对象之间一对多的依赖关系,因此当一个对象改变状态时,它的所有依赖关系都会被通知并自动更新。它也被称为发布-订阅模式。
状态模式 状态模式允许对象在其内部状态改变时改变其行为。对象将改变它的类。每个对象的可能状态应该有一个单独的具体类。
策略模式 策略模式用于在运行时从多个其他实现中选择算法或任务的特定实现。
模板方法模式 模板方法模式定义了执行多步算法的顺序步骤,并且还可以选择提供默认实现(基于需求)
访问者模式 当我们需要对象层次结构来修改它们的行为而不需要修改它们的源代码时,可以使用访问者模式。

学习愉快!

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!