介绍 原型模式(Prototype Pattern)** - 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 原型模式(Prototype Pattern)是一个比较简单的创建型设计模式,它的重点在于克隆,也就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象 原型模式结构原型方法模式的角色及职责 客户(Client):提出创建对象的请求,使用复制对象的方法创建新实例 抽象原型(Abstract Prototype):定义所有的具体原型类所需的复制方法, ...
工厂模式-简单工厂模式、工厂方法模式、抽象工厂模式
工厂模式工厂模式是一种比较常见的创建型设计模式,分为简单工厂模式、工厂方法模式、抽象工厂模式 工厂模式旨在把对象的创建和使用分离开来,把创建对象的职责交给工厂类,这样会有哪些好处? 解耦:对象的创建和使用分离 减少代码重复、创建蔓延,降低维护成本:对于创建较为复杂的对象,可以减少代码重复、降低维护成本 简单工厂模式介绍 简单工厂模式-又叫做静态工厂方法,工厂类提供创建对象的方法(如create),接收一个参数,通过不同的参数实例化不同的产品类 简单工厂方法并不属于23种常见设计模式之一 ...
单例模式-只有一个实例
介绍单例模式(Singleton Pattern)是一个比较简单的设计模式,属于创建型模式。其定义为 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例 在系统中,单例模式要求一个单例对象只能有一个实例,这类对象如果有多个实例就可能会产生一些问题,如:资源消耗过多,处理结果不一致等,一般单例会有以下使用场景 生成唯一 序列号 整个项目的共享访问点或共享数据,如Web页面计数器 创建一个对象实例需要消耗过多资源,如I/O和数据库连接等 在Java中,一个单例对象在一个JVM中 ...
Swagger使用和注释介绍
介绍什么是SwaggerSwagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。 作用 接口文档在线自动生成 功能测试 Swagger是一组开源项目,其中主要要项目如下: Swagger-tools:提供各种与Swagger进行集成和交互的工具。例如模式检验、Swagger 1.2文档转换成Swagger 2.0 ...
设计模式-面向对象设计原则
设计模式(Design Pattern)是前辈们在代码实践中所总结的经验,是解决某些特定问题的套路。在使用一些优秀的框架时,可能会接触到它里面所运用到的一些设计模式,又或许你在编码去设计一些模块时,为了提高代码可复用性、扩展性、可读性等,运用到的一些设计理念也会与某些设计模式思想相吻合。 系统的了解和学习设计模式是很有必要的,能帮助提升面对对象设计的能力,了解各种设计模式的特点和运用场景 在学习设计模式前,先了解下面对对象的设计原则 面对对象设计原则对于一个好的面对对象软件系统的设计来说,可维护 ...
Spring Data JPA 使用
Java 持久层框架访问数据库的方式大致分为两种。一种以 SQL 中心,封装一定程度的 JDBC 操作,比如 MyBatis。另一种是以 Java Entity 为中心,将实体的关系对应到数据库表之间的关系,如 ORM (Object Relational Mapping) 工具。 JAP (Java Persistence API) 就是用来整合第三方 ORM 框架的,即建立一套标准的方式。通过注解或 XML 描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中 Spring Da ...
Spring Cloud Zuul 过滤器
Spring Cloud Zuul 除了可以实现请求的路由功能,还有一个重要的功能就是过滤器。Zuul 的路由功能让所有的微服务提供的接口有统一的网关入口,但并不是所有的接口都是对外完全开发的,它们的访问权限一般都有一定的限制。那我们可以在每个服务都加上对应的校验和权限鉴定,那这些通常都是用过滤器或拦截器实现的,而且一个系统的各个服务的校验也大都是相似,这些相似的校验逻辑打码在每个服务都会有一份,不仅冗余且维护麻烦。更好的办法就是在请求的最前端统一去做这样的事情,而统一的 API 服务网关入口就 ...
Spring Cloud Zuul 构建微服务网关
为什么要有服务网关?在使用微服务架构时,一个客户端的业务需求可能会调用多个服务的接口,例如一次购物,需要调用商品服务,下单的时候要调用订单服务(服务划分更细的话还要调用更多的微服务)。客户端直接跟各个服务通信会有一些问题或者说弊端,客户端的调用会复杂,更重要的是会有跨域请求问题和复杂的权限控制认证 为了对外服务的安全性,不得不在原有的服务接口上做有关权限控制的校验逻辑,而这些权限相关的逻辑应该要把它从各个服务中抽离出来,作为外部调用和各个服务之间的负载均衡器。服务网关就是这样一个角色,对外统一 ...
Spring Cloud 断路器 Hystrix
在微服务架构中,通常存在多个服务调用层。微服务之间通过网络进行通信,从而支撑起整个应用,为了保证高可用,单个服务通常也会集群部署。但由于网络原因或者自身原因,每个服务并不能保证100% 可用。而服务间的依赖关系,会导致故障传播,即服务提供者的不可用会导致消费者不可用,并把不可用逐渐放大,这就是雪崩效应。 这里就引入了请求超时机制和断路器模式 Hystrix 简介Hystrix 是 Netflix 的开源组件,是一个用于实现超时机制和断路器模式的工具类库。在微服务架构中,通常存在多个服务调用层。较 ...
Spring Cloud 服务消费(Feign)
在使用 RestTemplate 实现 Rest API 调用的时候,是通过拼接字符串的方式构造 URL,向具体服务实例发起 Http 请求。在定义 RestTemplate 的时候,还可以增加 @LoadBalanced 注解,在调用服务接口的时候,原来 host 部分是通过手动拼接ip和端口的,现在直接用 服务名 来写请求路径。在真正调用的时候,Spring Cloud 会将请求拦截下来,然后通过负载均衡器(如 Ribbon)选出节点,并替换服务名部分为具体的ip和端口,从而实现基于服务名的 ...