设计模式
文章平均质量分 70
life风起云涌
这个作者很懒,什么都没留下…
展开
-
缓存驻留模式——云计算架构常用设计模式
背景描述 分布式系统当中,应用程序通常使用缓存来优化数据库数据的重复访问所带来的性能问题。但是期望缓存和数据库数据永远保持一致是不切实际的,因此,此策略用来确保缓存数据尽可能最新。目的 根据需要从数据存储器加载数据,此模式可以用来提高性能,还可以用来维护缓存和后台数据库的数据一致性,但不能解决一致性问...原创 2019-05-27 17:59:28 · 187 阅读 · 0 评论 -
模板模式
应用场景模板方法模式:定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。具体可能适用的场景:当算法步骤已经确定,而细节步骤实现可能多样化时,可采用模板模式。优缺点优点:某些算法中,可以解决代码的重复问题。控制子类别必须遵守的一些事项。代码实现方式:为模板方法模式准备一个抽象类,将部分逻辑以具体方法以及具...原创 2019-06-27 15:48:44 · 289 阅读 · 1 评论 -
java代理模式的三种实现
总述 java当中存在三种代理模式,静态代理、动态代理和cglib增强码实现的代理。其中,之前的博文中使用C++实现了代理模式的静态代理,此处就不做代码记录,需要的参照之前的实现。 前两种代理有一定的限制:需要提供接口或抽象类,才能进行实现。而最后一种则没有这个限制,直接使用实现类即可,其实现的原理是为...原创 2019-06-04 22:16:49 · 141 阅读 · 0 评论 -
原型模型
应用场景原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节。工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。具体可能适用的场景:当创建一个对象时,其初始化可能会面临复杂的创建过程,我们可以通过稳定一致的接口创建对象;当系统针对某对象可能存在多个分支...原创 2019-06-03 20:37:23 · 4678 阅读 · 0 评论 -
常见的10中体系架构
https://blog.csdn.net/u014094516/article/details/83056578分层模式客户端-服务器模式主从设备模式管道-过滤器模式代理模式点对点模式事件总线模式模型-视图-控制器模式黑板模式解释器模式...转载 2019-06-03 11:16:13 · 378 阅读 · 0 评论 -
事件朔源模式——云计算架构常用设计模式
背景 在分布式系统当中,处理数据的主要方法是保存数据当前的状态。例如,传统的CRUD模式种,从存储器读取数据,进行修改,并更新数据库种当前的数据状态,而此过程的实现,通常需要锁定数据的事务来进行实现。因此,这个过程主要存在着一些局限性:CRUD系统的更新操作直接针对数据存储可能会限制性能、响应能力和拓展性,因为其必须处理锁定数据的开销;高并发情...原创 2019-06-03 11:09:05 · 422 阅读 · 0 评论 -
工厂方法模式
应用场景 工厂方法模式对简单工厂模式进行了抽象。有一个抽象的Factory类(可以是抽象类和接口),这个类将不再负责具体的产品生产,而是只制定一些规范,具体的生产工作由其子类去完成。在这个模式中,工厂类和产品类往往可以依次对应。即一个抽象工厂对应一个抽象产品,一个具体工厂对应一个具体产品,这个具体的工厂就负责生产对应的产品。优缺点优点:将简单...原创 2019-06-01 17:24:11 · 575 阅读 · 0 评论 -
策略模式
应用场景多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。对客户隐藏具体策略(算法)的实现细节,彼此完全独立。优缺点策略模式是一种定义一系列算法的方法,从概念上来讲,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少各种算法类与使...原创 2019-05-29 16:47:20 · 78 阅读 · 0 评论 -
命令和查询职责分离模式——云计算架构常用设计模式
背景在传统的数据库管理系统中,执行更新和查询的是针对同一个数据库中的相同实体。当数据操作应用于简单的业务逻辑时,传统的CRUD设计方式工作良好。代码生成工具提供快速创建数据访问代码框架机制,然后根据需要进行定制扩展。但是,传统的CRUD方法存在一点缺点:它通用意味着数据的读取并显示的部分和写入到存储之间会不匹配。例如,即使一些附带的列或属性并没有最终显示在界面上,但更新时也要求对这些列和属...原创 2019-06-01 16:45:38 · 238 阅读 · 0 评论 -
补偿事务模式——云计算架构常用设计模式
背景 在云中,应用程序频繁的修改数据,而这些数据可能分布在不同地理位置的各式各样的数据源中。为了避免冲突并提供性能,应用程序不应试图提供强一致性事务,而应实现最终一致性。一个事务当中,可能会由一系列的步骤构成,当所有操作完成时,系统会达到最终的一致性。 最终一致性模型中最显著的一个难题是如何处理无法挽回...原创 2019-05-29 12:10:49 · 254 阅读 · 0 评论 -
断路器模式——云计算架构常用设计模式
背景在一个分布式系统当中,一个应用程序在云中对远程资源和服务进行访问时,可能会由于瞬时故障而引起操作失败,如网络连接缓慢、超时、资源被过度访问或临时不可用。但是,这些故障都可以在短时间内得到修复,因此可以使用重试模式来处理它们。同时,也会存在一些很难预见的突发事件而需要更长时间来恢复的情形。如果采用重试模式去完成一个不大可能成功的操作是毫无意义的。另外,如果一个服务非常繁忙,可能会导致系统其他...原创 2019-05-29 11:24:03 · 279 阅读 · 0 评论 -
联合身份模式——云计算架构常用设计模式
背景 在一个系统当中,可能集成了多个应用程序,而这些应用程序由一些有商业联系的组织提供和托管。但是对于使用者来说,他们可能会面临着被强迫使用不同凭证的问题,这将导致以下问题:糟糕的用户体验:对用户来说,使用多个不同的凭证意味着更多的操作复杂性;暴露安全漏洞:对用户权限的管理更加复杂;复杂的用户管理:管理员必须管理所有用户的凭证,提高了管理难度...原创 2019-06-06 10:01:00 · 712 阅读 · 0 评论 -
代理模式
应用场景 代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。客户端分辨不出代理主题对象与真实主题对象。 代理模式也可以并不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,这时候代...原创 2019-05-31 16:56:13 · 121 阅读 · 0 评论 -
计算资源合并模式——云计算架构常用设计模式
背景 云计算的解决方案中,最初设计可能有意遵循关注点分离的设计原则,把操作分解为独立的计算单元以便可以单独托管和部署。然而,虽然这种策略可以帮助简化解决方案的逻辑实现,但是在同一个应用程序中要部署大量的计算单元,这会增加运行时的托管成本,并且使得系统管理复杂化。另外,这种方法也可能不是最合乎经济效益的解决方案,会导致系统空闲或低使用率。目的&nb...原创 2019-05-31 16:28:12 · 534 阅读 · 0 评论 -
外部配置存储模式——云计算架构常用设计模式
背景大多数应用程序的运行时环境都包括配置文件,在部署应用的时候,通常会随着应用程序一起进行部署。针对配置文件而言,放置位置及管理的不当可能造成很多额外的问题。当中途编辑修改配置文件后,也要求重新部署应用程序,从而导致意外的停机和额外的管理开销;本地配置文件将配置信息限定到单个应用程序。而很多时候,跨多个应用程序共享配置设置非常有用,如数据库的连接,主题信息共享等等;管理应用程序多个实例的...原创 2019-06-05 10:30:47 · 253 阅读 · 0 评论 -
装饰模式
应用场景装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。特点:需要扩展一个类的功能,或给一个类添加附加职责。需要动态的给一个对象添加功能,这些功能可以再动态的撤销。需要增加由一些基本功能的排列组合而产生的非常大量...原创 2019-05-30 16:59:21 · 136 阅读 · 0 评论 -
竞争消费者模式——云计算架构常用设计模式
背景在云上,一个应用程序应该具有处理大量请求的能力。常用的技术是应用程序发送消息到另一个拥有异步处理能力的服务。这种策略可以确保应用在等待过程中能继续处理业务逻辑而不被阻塞。大多数情况下,请求的数量也会随着时间的变化而有着显著变化。如高峰时期,每秒可能需要处理数百个请求,而其他时间,请求数量可能会很少。为了处理这种波动请求,系统可以运行消费者服务的多个实例。但是,这些实例必须保证系统的安全性(...原创 2019-05-30 16:31:17 · 200 阅读 · 0 评论 -
简单工厂模式
作用*工厂类负责创建的对象比较少;*客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;*由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用优缺点*优点:将产品类和工厂类分开,工厂类可以利用外界提供的信息来觉得创建那个具体类的对象,使得外界不必关心产品类对象的构建细节*缺点:当产品类需要添加或修改时,工厂类需要做相应的修改,不利于对系统的维护和扩展。样例...原创 2019-05-27 18:33:19 · 52 阅读 · 0 评论 -
外观模式
应用场景外观模式,为子系统的一组接口提供了一致的界面。从而隐藏了子系统当中的具体实现,同时降低了用户使用的复杂度。应用场景:设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。优缺...原创 2019-06-27 15:55:08 · 89 阅读 · 0 评论