![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
Wang-Junchao
这个作者很懒,什么都没留下…
展开
-
事件源模式
【博文目录>>>】事件源模式使用仅追加存储来记录描述在域中对数据执行的操作的完整事件序列,而不是仅存储当前状态,以便可以使用该存储来实现域对象。这种模式可以通过避免同步数据模型和业务域的要求,简化复杂领域中的任务;提高性能、可伸缩性和响应性;为事务性数据提供一致性;并维护完整的审计追踪和历史记录,以支持采取补偿措施。背景与问题大多数应用程序使用数据,并且典型的方法是应用...翻译 2020-03-21 10:48:24 · 976 阅读 · 0 评论 -
命令和查询责任隔离(CQRS)模式
【博文目录>>>】命令和查询责任隔离(CQRS)模式使用单独的接口将读取数据的操作与更新数据的操作隔离开来。这种模式可以最大限度地提高性能、可伸缩性和安全性;通过更高的灵活性支持系统随时间的发展;并防止更新命令在域级别造成合并冲突。背景与问题在传统的数据管理系统中,命令(对数据的更新)和查询(对数据的请求)都针对单个数据存储库中的同一组实体执行。这些实体可以是关系数据库...翻译 2020-03-14 08:33:00 · 504 阅读 · 0 评论 -
计算资源整合模式
【博文目录>>>】计算资源整合模式将多个任务或操作整合到一个计算单元中。这种模式可以提高计算资源利用率,并减少与在云托管应用程序中执行计算处理相关的成本和管理开销。背景与问题云应用程序经常实现各种操作。在某些解决方案中,最初可能会遵循关注点分离的设计原则,并将这些操作划分为单独托管和部署的离散计算单元(例如,作为Microsoft Azure Cloud Service...翻译 2020-03-08 09:21:18 · 876 阅读 · 0 评论 -
补偿交易模式
【博文目录>>>】补偿交易模式如果一个或多个步骤失败,则撤消由一系列执行的工作的步骤组成,这些步骤一起定义最终一致的操作。遵循最终一致性模型的操作通常可在实现复杂业务流程和工作流的云托管应用程序中找到。背景与问题运行在云中的应用程序经常修改数据。这些数据可以分布在各种地理位置的各种数据源上。为了在这样的分布式环境中避免争用和提高性能,应用程序不应该试图提供强大的事务一致...翻译 2020-02-29 09:02:09 · 1004 阅读 · 0 评论 -
缓存旁路模式
【博文目录>>>】缓存旁路模式根据需要从数据存储区将数据加载到缓存中。这种模式可以提高性能,并有助于保持缓存中的数据与基础数据存储中的数据之间的一致性。语境与问题应用程序使用缓存优化对数据存储中保存的信息的重复访问。然而,期望缓存的数据始终与数据存储中的数据完全一致是不切实际的。应用程序应该实现一种策略,以帮助确保缓存中的数据尽可能地更新,但也可以检测和处理缓存中的数据...翻译 2020-02-09 09:59:27 · 2343 阅读 · 0 评论 -
云设计模式:云应用程序的规范体系结构指南
本指南包含24种设计模式和10个相关的指导主题,通过展示如何将每一项应用于云应用程序体系结构的全局图来阐明应用模式的好处。它还讨论了每种模式的好处和注意事项。大多数模式代码样例或者显示如何使用MicrosoftAzure的特性实现模式的片段。然而,本指南中描述的大多数主题与各种分布式系统同样相关,无论是在Azure上还是在其他云平台上。设计模式以下设计模式在云托管应用程序中非常有用。每个模式都...翻译 2020-02-08 10:29:12 · 943 阅读 · 0 评论 -
(22)享元模式
(22)享元模式定义:使用共享对象可有效地支持大量的细拉度的对象。类型:结构型模式类图:门面模式结构:l 抽象享元角色(Flyweight):此角色是所有的具体享元类的超类,为这些类规定出需要实现的公共接口或抽象类。那些需要外部状态(External State)的操作可以通过方法的参数传入。抽象享元的接口使得享元变得可能,但是并不强制子类实行共享,因此并非所有的原创 2015-06-21 07:28:19 · 1376 阅读 · 1 评论 -
(19)访问者模式
(19)访问者模式定义:封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。类型:行为类模式类图:访问者模式可能是行为类模式中最复杂的一种模式了,但是这不能成为我们不去掌握它的理由。我们首先来看一个简单的例子,代码如下:class A { public void method1(){原创 2015-06-20 06:05:44 · 1843 阅读 · 0 评论 -
设计模式
设计模式分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式(门面模式)、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。原创 2015-06-11 07:59:40 · 1523 阅读 · 0 评论 -
设计模式中类的关系
在java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强。依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。定义比较晦涩难懂,但在java中的表现还是比较直观的:类A当中使用了类B,其中类B是作为类A的方法参数、方法中的原创 2015-06-12 08:53:21 · 1096 阅读 · 0 评论 -
(1)单例模式
(1)单例模式定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。类型:创建类模式类图: 类图知识点:1. 类图分为三部分,依次是类名、属性、方法2. 以>结尾的为注释信息3. 修饰符+代表public,-代表private,#代表protected,什么都没有代表包可见。4. 带下划线的属性或方法代表是静态的。5. 对类图中原创 2015-06-13 08:01:28 · 1331 阅读 · 0 评论 -
(5)建造者模式
(5)建造者模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类型:创建类模式类图:四个要素l 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。l原创 2015-06-15 07:46:20 · 1433 阅读 · 0 评论 -
(4)模版方法模式
(4)模版方法模式定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。类型:行为类模式类图:事实上,模版方法是编程中一个经常用到的模式。先来看一个例子,某日,程序员A拿到一个任务:给定一个整数数组,把数组中的数由小到大排序,然后把排序之后的结果打印出来。经过分析之后,这个任务大体上可分为两部分,排序和打原创 2015-06-15 07:44:46 · 1193 阅读 · 1 评论 -
(6)代理模式
定义:为其他对象提供一种代理以控制对这个对象的访问。使用代理模式创建代理对象,让代理对象控制目标对象的访问(目标对象可以是远程的对象、创建开销大的对象或需要安全控制的对象),并且可以在不改变目标对象的情况下添加一些额外的功能。类型:结构类模式类图: 代理模式也叫做委托模式,它是一项基本设计技巧,许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式原创 2015-06-16 07:05:21 · 1432 阅读 · 0 评论 -
(7)原型模式
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类型:创建类模式类图:原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:l 实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方原创 2015-06-16 07:07:06 · 1379 阅读 · 0 评论 -
(3)抽象工厂模式
定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。类型:创建类模式类图:抽象工厂模式与工厂方法模式的区别抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接口或者抽象类,也原创 2015-06-15 07:11:21 · 997 阅读 · 0 评论 -
(2)工厂方法模式
定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。类型:创建类模式类图:工厂模式:首先需要说一下工厂模式。工厂模式根据抽象程度的不同分为三种:简单工厂模式(也叫静态工厂模式)、本文所讲述的工厂方法模式、以及抽象工厂模式。工厂模式是编程中经常用到的一种模式。它的主要优点有:l 可以使代码结构清晰,有效地封装变化。在编程中,原创 2015-06-14 07:16:00 · 1385 阅读 · 0 评论 -
(20)状态模式
(20)状态模式定义:当-个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。)类型:行为型模式类图:状态模式结构:State:抽象状态角色,接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换。ConcreteState:具体状态角色,每一个具体状态必须完成两个职责:本状态的行为管理以及趋向状态处理,通俗地说,就是本状态下要做的事情,以及本状态如原创 2015-06-20 06:21:39 · 1397 阅读 · 0 评论 -
(18)备忘录模式
(18)备忘录模式定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态类型:行为类类图:我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便原创 2015-06-20 05:52:09 · 1513 阅读 · 0 评论 -
(23)桥梁模式
(23)桥梁模式定义:也叫桥接模式,将抽象部分与实现部分分离,使它们都可以独立的变化类型:结构型模式类图:桥梁模式结构:可以看出,这个系统含有两个等级结构,也就是:l 由抽象化角色和修正抽象化角色组成的抽象化等级结构。l 由实现化角色和两个具体实现化角色所组成的实现化等级结构。l Abstraction:抽象化角色,它的主要职责是定义出该角色的行为原创 2015-06-21 07:34:49 · 1387 阅读 · 1 评论 -
【01】【设计模式几大原则】
为什么要提倡“Design Pattern呢?根本原因是为了代码复用,增加可维护性原创 2015-03-16 17:59:48 · 1250 阅读 · 0 评论 -
【06】【模板方法模式】
Template Method(模板方法模式):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。原创 2015-03-17 16:28:12 · 808 阅读 · 0 评论 -
【02】【设计模式分类】
设计模式分为三种类型,共23种,创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。原创 2015-03-16 18:04:44 · 850 阅读 · 0 评论 -
【05】【抽象工厂模式】
Abstract Factory(抽象工厂模式):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。原创 2015-03-17 16:24:20 · 771 阅读 · 0 评论 -
【04】【工厂方法模式】
Factory Method(工厂模式):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类。原创 2015-03-17 09:46:11 · 932 阅读 · 0 评论 -
(11)装饰模式
(11)装饰模式定义:动态地给一个对象添加一些额外的职责。就扩展功能而言, 它比生成子类方式更为灵活。类型:结构型模式类图:1. 装饰模式(Decorator)的定义:又名包装(Wrapper)模式,装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。2. 装饰模式以对客户端透明的方式动态的给一个对象附加上更多的责任。换言之客户端并不会原创 2015-06-17 06:06:33 · 1341 阅读 · 0 评论 -
(10)责任链模式
(10)责任链模式定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。类型:行为类模式类图:public void test(int i, Request request){ if(i==1){ Handler1.response(request);原创 2015-06-17 06:00:04 · 1667 阅读 · 1 评论 -
(8)中介者模式
定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。类型:行为类模式类图:中介者模式的结构中介者模式又称为调停者模式,从类图中看,共分为3部分:l 抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。l 中介者原创 2015-06-16 07:09:27 · 1240 阅读 · 0 评论 -
(9)命令模式
定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。类型:行为类模式类图:命令模式的结构顾名思义,命令模式就是对命令的封装,首先来看一下命令模式类图中的基本结构:l Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。l原创 2015-06-17 05:55:18 · 1109 阅读 · 0 评论 -
(16)观察者模式
(16)观察者模式定义:定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。类型:行为类模式类图:在软件系统中经常会有这样的需求:如果一个对象的状态发生改变,某些与它相关的对象也要随之做出相应的变化。比如,我们要设计一个右键菜单的功能,只要在软件的有效区域内点击鼠标右键,就会弹出一个菜单;再比如,原创 2015-06-19 06:19:57 · 1559 阅读 · 0 评论 -
(14)迭代器模式
(14)迭代器模式定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。类型:行为类模式类图:如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧:public static void print(Collection coll){ Iterator it = coll.原创 2015-06-18 07:12:14 · 1173 阅读 · 0 评论 -
(13)适配器模式
定义:(将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作类型:结构类型模式类图:类的适配器模式(采用继承实现)对象适配器模式(采用对象组合方式实现)代码实现:类的适配器模式// 已存在的、具有特殊功能、但不符合我们既有的标准接口的类 class Adaptee { public原创 2015-06-18 07:05:35 · 1113 阅读 · 0 评论 -
(12)策略模式
定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。类型:行为类模式类图:策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。在行为类模式中,有一种模式也是关注对算法的封装——模版方法模式,对照类图可以看到,策略模式与模版方法模式的区别仅仅是多了一个单独的封装类Context,它与原创 2015-06-18 06:59:18 · 1220 阅读 · 0 评论 -
(15)组合模式
(15)组合模式定义:也叫合成模式,或者部分-整体模式,主要是用来描述部分与整体的关系,定义,将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。类型:结构型模式类图:角色说明:Componnent抽象构件角色:定义参加组合对象的共有方法和属性,可以定义一些默认的行原创 2015-06-19 06:10:28 · 918 阅读 · 0 评论 -
(17)门面模式
(17)门面模式定义:也叫外观模式,要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行.门面模式提供一个高层次的接口,使得子系统更易于使用.类型:结构型模式类图:门面模式结构:Facade门面角色:客户端可以调用这个角色的方法.此角色知晓子系统的所有功能和责任。一般情况下,本角色会将所有从客户端发来的请求委派到相应的原创 2015-06-19 06:26:47 · 1368 阅读 · 0 评论 -
(21)解释器模式
(21)解释器模式定义:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。类型:行为类模式类图:解释器模式是一个比较少用的模式。解释器模式的结构l 抽象解释器:声明一个所有具体表达式都要实现的抽象接口(或者抽象类),接口中主要是一个interpret()方法,称为解释操作。具体解释任务由它的各个实现类来完成,具体的解释原创 2015-06-21 07:24:38 · 1188 阅读 · 0 评论 -
【03】【单例模式】
Singleton(单例模式):保证一个类仅有一个实例,并提供一个访问它的全局访问点。原创 2015-03-17 09:43:09 · 720 阅读 · 0 评论