![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
王道长的编程之路
学不死那就朝死里学
展开
-
设计模式系列之23种模式全解析
文章目录[23种设计模式全解析](https://www.cnblogs.com/geek6/p/3951677.html)一、设计模式的分类二、设计模式的六大原则1、单一职责原则2、里氏替换原则(Liskov Substitution Principle)3、依赖倒转原则(Dependence Inversion Principle)4、接口隔离原则(Interface Segregation ...原创 2019-05-07 15:49:59 · 847 阅读 · 1 评论 -
23种设计模式(java版)
前言可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现...原创 2020-03-01 08:38:49 · 559 阅读 · 0 评论 -
创建类型5-1:工厂模式(Factory Pattern)
1. 概述这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。2. 介绍2.1 意图定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。2.2 主要解决主要解决接口选择的问题。2.3 何时使用我们明确地计划不同条件下创建...原创 2019-05-21 18:40:18 · 132 阅读 · 0 评论 -
创建类型5-2:抽象工厂模式(Abstract Factory Pattern)
1. 概述抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。2. 介绍2.1 意图提供一个创建一系列相关或相互依赖对象的接口,...原创 2019-05-21 18:42:02 · 118 阅读 · 0 评论 -
创建类型5-3:单例模式(Singleton Pattern)
1. 概述保证一个类仅有一个实例,并提供一个访问它的全局访问点。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。2. 介绍2.1 意图保证一个类仅有一个实例...原创 2019-05-21 18:45:21 · 128 阅读 · 0 评论 -
创建类型5-4:建造者模式(Builder Pattern)
1. 概述将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的,它提供了一种创建对象的最佳方式。。2. 介绍2.1 意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。2.2 主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其...原创 2019-05-21 18:50:21 · 213 阅读 · 0 评论 -
创建类型5-5:原型模式(Prototype Pattern)
1. 概述原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以...原创 2019-05-21 18:52:18 · 159 阅读 · 0 评论 -
结构类型7-1:代理模式(Proxy Pattern)
1. 概述在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。为其他对象提供一种代理以控制对这个对象的访问。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。2. 介绍2.1 意图为其他对象提供一种代理以控制对这个对象的访问。2.2 主要解决在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对...原创 2019-05-21 18:56:04 · 147 阅读 · 0 评论 -
结构类型7-2:桥接模式(Bridge Pattern)
1. 概述桥接(Bridge)是用于把抽象化与实现化解耦,将抽象部分与它的实现部分分离,使它们都可以独立地变化。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。其中,可以使用相同的抽象类方法但是不同的桥接实现类,来画出不同颜色的圆。2. 介绍2.1 意图将...原创 2019-05-21 18:58:17 · 188 阅读 · 0 评论 -
结构类型7-3:适配器模式(Adaptor Pattern)
1. 概述将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。2. 介绍2.1 意图将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类...原创 2019-05-21 19:00:48 · 223 阅读 · 0 评论 -
结构类型7-4:门面模式(Facade Pattern)
1. 概述为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。2. 介绍2.1 意图为...原创 2019-05-21 19:02:49 · 210 阅读 · 0 评论 -
结构类型7-5:享元模式(Flyweight Pattern)
1. 概述运用共享技术有效地支持大量细粒度的对象。享元模式主要用于减少创建对象的数量,以减少内存占用和提高性能。运用共享技术有效地支持大量细粒度的对象,它提供了减少对象数量从而改善应用所需的对象结构的方式。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。我们将通过创建 5 个对象来画出 20 个分布于不同位置的圆来演示这种模式。由于只有 5 种可用的颜色,所以 color...原创 2019-05-21 19:04:45 · 193 阅读 · 0 评论 -
结构类型7-6:装饰器模式(Decorator Pattern)
1. 概述动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。装饰器模式允许向一个现有的对象添加新的功能,同时又不改变其结构。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。2. 介绍2.1 意图动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。2.2 主要解决...原创 2019-05-21 19:06:41 · 183 阅读 · 0 评论 -
结构类型7-7:组合模式(Composite Pattern)
1. 概述又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象,将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式依据树形结构来组合对象,用来表示部分以及整体层次,它创建了对象组的树形结构。“Composite使得用户对单个对象和组合对象的使用具有一致性。”这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。2. 介绍2.1 意图将对象组合成树形结构以...原创 2019-05-21 19:09:24 · 338 阅读 · 0 评论 -
行为类型11-1:备忘录模式
1. 概述在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。2. 介绍2.1 意图在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。2.2 主要解决所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。2.3 何...原创 2019-05-21 19:11:57 · 175 阅读 · 0 评论 -
行为类型11-2:策略模式(Strategy Pattern)
1. 概述在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。2. 介绍2.1 意图定义一系列的算法,把...原创 2019-05-21 19:13:48 · 169 阅读 · 0 评论 -
行为类型11-3:迭代器模式(Iterator Pattern)
1. 概述迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。2. 介绍2.1 意图提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。2.2 主要解...原创 2019-05-21 19:15:49 · 158 阅读 · 0 评论 -
行为类型11-4:访问者模式(Visitor Pattern)
1. 概述在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。2. 介绍...原创 2019-05-21 19:17:42 · 215 阅读 · 0 评论 -
行为类型11-5:观察者模式(Observer Pattern)
1. 概述当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。[定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。]2. 介绍2.1 意图定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。2.2 主要...原创 2019-05-21 19:19:06 · 212 阅读 · 0 评论 -
行为类型11-6:解释器模式(Interpreter Pattern)
1. 概述解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。2. 介绍2.1 意图给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识...原创 2019-05-21 19:21:40 · 169 阅读 · 0 评论 -
行为类型11-7:命令模式(Command Pattern)
1. 概述将一个请求以命令的形式包裹在对象中,从而使你可用不同的请求对客户进行参数化,然后传给调用对象;对请求排队或记录请求日志,以及支持可撤消的操作。。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。2. 介绍2.1 意图将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。2.2 主要解决在软件系统中,行为请求者与行为实现者通常是一种...原创 2019-05-21 19:23:42 · 207 阅读 · 0 评论 -
行为类型11-8:模板模式(Template Pattern)
1. 概述在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。2.介绍2.1 意图定义一个操作中的算法的骨架,而将一些步骤延迟到子类...原创 2019-05-21 19:25:51 · 737 阅读 · 0 评论 -
行为类型11-9:责任链模式(Chain of Responsibility Pattern)
1. 概述顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些...原创 2019-05-22 05:51:22 · 737 阅读 · 0 评论 -
行为类型11-10:中介者模式(MediatorPattern)
1. 概述中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。2. 介绍2.1 意图用一个中介对象来封装一系列的对象交...原创 2019-05-22 05:54:26 · 775 阅读 · 0 评论 -
行为类型11-11:状态模式(State Pattern)
1. 概述在状态模式(State Pattern)中,类的行为是随着它的状态改变的。定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。2. 介绍2.1 意图允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。2.2 主...原创 2019-05-22 05:57:04 · 778 阅读 · 0 评论