装饰器模式【常用】 装饰器模式【常用】Demo案例-咖啡订单项目咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡)调料:Milk、Soy(豆浆)、Chocolate要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便使用 OO 的来计算不同种类咖啡的费用: 客户可以点单品咖啡,也可以单品咖啡+调料组合。方案一分析Drink 是一个抽象类,表示饮料des 就是对咖啡的描述, 比如咖啡的名字cost()
UML类图 UML类图就是定义了一些符号,来描述软件系统分析和设计过程的工具。它描述了软件模型中各个元素之间的关系,比如类,接口,实现,泛化,依赖,组合,聚合等用于描述系统中的类***(对象)本身的组成和类(对象)***之间的各种静态关系。类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合。1、依赖关系(Dependence)小结:类中用到了对方如果是类的成员属性如果是方法的返回类型是方法接收的参数类型方法中使用到public class PersonServiceBe
桥接模式【常用】 桥接模式【常用】Demo案例-手机操作问题需求现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图:传统方案解决手机操作问题分析传统方法对应的类图扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。违反了单一职责原则,当我们增加手机样式时,要同时增加所有品牌的手机,这样增加了代码维护成本.解决方案-使用桥接模式Bridge 模式基于类的最小设计原则,通过使用封装
适配器模式 适配器模式概述基本介绍适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)适配器模式属于结构型模式主要分为三类:类适配器模式、对象适配器模式、接口适配器模式工作原理适配器模式:将一个类的接口转换成另一种接口.让原本接口不兼容的类可以兼容从用户的角度看不到被适配者,是解耦的用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的
建造者模式【常用】 建造者模式【常用】1. 建造者模式基本介绍建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。2. 为什么需要建造者模式?在平时的开发中,创建一个对象最常用的方式是,使用 new 关键字调用类的构造函数来完成。我的问题
简单工厂模式+工厂方法模式+抽象工厂模式 创建型模式这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。1. 工厂模式定义工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可
单例模式(五种实现) 单例模式一、什么是单例模式单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。单例的实现主要是通过以下两个步骤:将该类的构造方法定义为私有方法,这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对
SpringCloud第八章OpenFeign服务接口调用 八、OpenFeign服务接口调用1、概述1.1、OpenFeign是什么官网解释:https://cloud.spring.io/spring-cloud-static/Hoxton.SR1/reference/htmlsingle/#spring-cloud-openfeignFeign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring C
SpringCloud第七章Ribbon负载均衡服务调用 SpringCloud第七章Ribbon负载均衡服务调用七、Ribbon负载均衡服务调用1、概述是什么Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供**客户端的软件负载均衡算法和服务调用。**Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于
SpringCloud第六章Consul服务注册与发现 SpringCloud第六章Consul服务注册与发现六、Consul服务注册与发现1、Consul简介1.1、是什么https://www.consul.io/intro/index.html[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z1ASUTjV-1628750641870)Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可
SpringCloud第三章(下)微服务工程构建 SpringCloud第三章(下)微服务工程构建2、Rest微服务工程构建2.1、构建步骤2.1.1、cloud-provider-payment8001微服务提供者支付Module模块建cloud-provider-payment8001创建完成后请回到父工程查看pom文件变化改POM<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"
SpringCloud第三章 微服务架构编码构建 SpringCloud第三章 微服务架构编码构建约定 > 配置 > 编码1、IDEA新建project工作空间新建Empty Project,类似工作空间新project设置project都选择8module点击+号,新建一个maven模块新Module的设置由于第一个是pom统一工程,不选择模板create from archetypeG:com.likun.springcloudA:microservicecloudV:1.0-SNAPSH
1.单链表反转详解(4种算法实现) 单链表反转详解(4种算法实现)输入一个链表,反转链表后,输出新链表的表头。示例1输入:{1,2,3}复制返回值:{3,2,1}这里给出四种解法解法一:思路就是最简单的思路,从头到尾遍历链表每个元素,然后修改指针域,前后一个指针域指向前一个元素,由于这里遍历过程中需要用到三个量,当前节点的前驱节点(用于把当前节点的后继赋给它),当前节点,后继节点(用于遍历链表用到,没有这个变量的话,前序节点后继修改后,原链表已经断开了)public class Solution { publ
SpringCloud组件--Eureka SpringCloud组件--Eureka 完整笔记 一、Eureka基础知识 1.1、什么是服务治理 ? 1.2、 什么是服务注册与发现? 1.3、Eureka两组件:Eureka Server和Eureka Client 二、单机Eureka构建步骤 2.1、IDEA生成eurekaServer端服务注册中心类似物业公司 2.2、EurekaClient端cloud-provider-payment8001 2.
SpringCloud Config 分布式配置中心 SpringCloud Config 分布式配置中心分布式系统面临的配置问题:微服务意味着将单体应用拆分成一个个自服务,这些服务都是要相应的配置信息才能运行,随着系统内微服务数量越来越多,配置信息也不断地增多,所以一套集中式的、动态的配置管理设施是必不可少的。概述SpringCloud Config是一个提供外部集中式配置管理的设施,配置服务器为各种不同的额微服务应用提供了一个中心化的外部配置 SpringCloud Config分为客户端和服务端两部分 服务端:分布式配置中心,是一个独立的
Zuul路由网关 Zuul路由网关概述 代理:Zuul提供外部的请求转发到具体的微服务实例中的服务 路由:Zuul可以对外部访问实现统一的入口 过滤:Zuul可以对外部访问进行干预,如请求校验、服务聚合等 Zuul需要配合Eureka使用,需要在Eureka中注册并获得其他微服务的信息 理解:Zuul就像大楼的保安,可以请他找人(代理),找的人在外面叫什么名字(路由),准不准你进楼(过滤)。因为保安属于物业公司,所以保安要在物业公司注册,所获得的信息也来源于物业公司(与Eur
Hystrix断路器 Hystrix断路器分布式系统面临的问题扇出多个微服务互相调用的时候,如果A调用B、C,而B、C又继续调用其他微服务,这就是扇出(像一把扇子一样慢慢打开。服务雪崩删除过程中,如果某一个环节的服务出现故障或连接超时,就会导致前面的服务占用越来越多的资源,进而引起系统崩溃,就是“雪崩效应”。 对于高流量的应用来说,单一的后端依赖会导致服务器所有的资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程序还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生更多的级联故障
Feign负载均衡 Feign负载均衡Feign是一个声明式WebService客户端,使用方法时定义一个接口并在上面添加注解即可。Feign支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持SpringMVC和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。使用案例新建Feign模块,加入依赖(其实跟80消费者差不多,主要是多了Feign依赖) <dependencies> &l