自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 设计模式之访问者模式

概念:访问者模式是一个相对比较简单,但是结构又比较复杂的一种设计模式,它讲的是一种作用于某对象结构的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作,主要将数据结构与数据操作进行分离访问者模式的基本工作原理:在被访问者的类里加一个对外提供接待访问者的接口UML类图:Visitor:抽象访问者,用于声明访问者可以访问哪些元素,可以由抽象类或接口来表示ConcreteVisitor:具体访问者,用来实现访问者定义的方法或者说具体实现抽象访问者定义的操作Element:数据结

2021-06-09 23:35:44 100

原创 设计模式之代理模式(cglib代理)

概念:cglib代理与jdk代理一样都是属于动态代理,他俩的区别就在于,使用jdk代理那么目标类一定要实现代理类的接口,则cglib代理不需要简单来说:1、如果一个类需要实现接口,那么使用jdk代理(不知道如何使用的请看我上一篇文章)2、如果一个类不需要实现接口来增强,那么使用cglib代理3、例如大名鼎鼎的Spring AOP,就是通过使用cglib代理来实现了对方法的拦截也就是增强类图:代码:运行结果:...

2021-05-03 10:53:53 78

原创 设计模式之代理模式(jdk代理)

概念:通过调用jdk的反射机制来实现代理操作,需要注意的是,如果要使用jdk代理,那么目标类是一定要实现被代理的接口的,所以jdk代理也被称为接口代理,课外话题:jdk代理与cglib代理的区别是,jdk代理一定要实现被代理的接口,则cglib代理不需要,想知道cglib代理请看我下一篇文章类图:代码:运行结果:...

2021-05-03 10:47:32 82

原创 设计模式之代理模式(静态代理模式)

概念:静态代理模式,通过目标类和代理类实现接口来完成静态代理优点:简单、方便理解,易用缺点:因为目标类和代理类都需要实现接口,如果这个接口发生了变动,需要维护的地方就会比较多类图:代码实现:运行结果:...

2021-05-03 10:42:26 82

原创 设计模式之外观模式

概念:外观模式为子系统的一组接口提供了一个一致的界面,此模式定义了一个高层接口,这个接口使得子系统更容易被使用。这个模式定义了一个一致的接口,屏蔽了子系统的细节,这让使用者只需要跟这个一致的接口发生调用,从而不需要关注其子系统内的具体实现细节项目背景:假如说在一个家庭影院里面,现在有一系列的产品,比如说,DVD、音响、爆米花机、屏幕等,按照传统的形式,在客户端需要调用每个产品的打开、关闭等方法,这样很麻烦不说,后面维护的成本也很高,由此就提出了外观模式,通过暴露一个一致的接口与客户端进行调用即可UML类

2021-04-28 22:41:20 56

原创 设计模式之组合模式

概念:1、组合模式又被称为:部分整体模式,它创建了对象组的树形结构,把对象组合成树形结构来表示“整体-部分”的层次关系2、组合模式依据树形结构来组合对象,用来表示部分与整体的层次3、这种类型的设计模式属于结构型设计模式4、组合模式使用户对于单个对象和组合对象的访问具有一致性,即:组合能让客户以一致性的方式处理个别对象以及组合对象...

2021-04-24 22:46:47 42

原创 设计模式之装饰者模式

概念:动态的将新功能附加到对象上,在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(OCP原则)项目背景:星巴克咖啡店,现在有美式咖啡、意大利浓缩咖啡、无因咖啡、调料有:牛奶、巧克力、豆浆,现在需要将咖啡的价格或者咖啡+调料的价格计算出来,传统做法应该都是有一个抽象类提供了计算的方法,由咖啡的种类去继承它,并且再进行组合,这是最容易想到的做法,但是有两个很致命的缺点:那就是不容易维护以及类的数量过多,会形成类爆炸,由此就引出了装饰者模式UML类图:类图简介:看过我文章的小伙伴都知道,

2021-04-19 23:32:55 60

原创 设计模式之桥接模式

桥接模式概念介绍:它是一种结构型设计模式,将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象和行为实践分离开来,从而保持各部位的独立性以及应对他们的功能扩展案例:以手机的品类与样式来举例,比如说,手机的品牌,现在有VIVO、小米、华为等手机,手机的样式有:直板、滑盖等样式的手机,传统的做法是,如果想新加一个apple品牌的手机,那么除了新加一个手机品牌之外,那么还需要给重新改一下样式

2021-04-17 21:32:00 45

原创 设计模式之适配器模式(接口适配器)

接口适配器介绍:1、当不需要全部实现接口提供的方法时,可先设计一个抽象类实现接口,并未该抽象类实现的每一个方法给一个空实现,这样子类在继承抽象类的时候就可以由选择性的覆盖想实现的方法2、适用于一个接口不想使用其所有方法的情况类图:...

2021-04-17 10:44:05 144

原创 设计模式之适配器模式(对象适配器)

对象适配器介绍:1、基本思路与类适配器相同,只是将Adapter,不是继承src类,而是作为持有src类的实例,以解决兼容性的问题2、根据合成复用原则,在系统中尽量用关联关系代替继承关系3、对象适配器是适配器模式中最常使用的适配器模式需求描述:依然是充电器的案例,不知道的请看上一节《设计模式之适配器模式(类适配器)》类图:运行结果:...

2021-04-17 10:23:38 123

原创 设计模式之适配器模式(类适配器)

最近感冒了,不咋爱说话,更新的比较慢,还请各位大哥们海涵~QVQ~~概念:适配器模式就是将一个类的接口转换成客户端所期待的另一种接口,从而使原本接口不匹配无法在一起工作的两个类能在一起工作适配器的三种形式:类适配器、对象适配器、接口适配器简单描述一下类适配器的原理:首先有一个Adapter类,来继承被适配者的类(src类),来实现目标类的接口(target类),来完成src->target类的转换也叫适配上代码之前,先介绍一下项目背景:最常见的就是手机充电器了,比如说现在有一个手机,它需要5

2021-04-14 21:24:32 178

原创 设计模式之建造者模式

概念:将一个复杂对象的构建与它的表示分离,使同样的构建过程创建不同的表示,这样的设计模式就被称为是建造者模式。其实说简单点就是将一个复杂对象分解为多个简单对象,然后一步一步的构建出来。优点:1、封装性好,因为表示与构建分离2、扩展性好,因为将一个复杂的对象拆分成多个简单对象,多个对象相互独立,有利于系统节藕3、客户端不必知道产品内部的组成细节,建造者可以对创建过程逐步细化,而不对其他模块产生任何影响,便于控制细节风险缺点:1、产品的组成部分必须相同,这就限制了它的使用范围2、如果产品内部的变化

2021-04-12 22:38:44 66

原创 设计模式之原型模式

原型模式:一句话总结,每次都会创建一个新的对象,这里Spring的scope=“prototype”,就是原型模式其中原型模式分为两种:一种是浅拷贝,浅拷贝的意思是说,copy对象的时候,只能copy一个类的基本属性类型以及String类型一种是深拷贝,深拷贝的意思是说,copy对象的时候,除了一个类的基本属性类型以及String类型的成员变量之外,还包括它的引用类型,同样会进行copy下面先说浅拷贝,浅拷贝也是最简单最容易理解的写法,实现cloneable接口,重写里面的clone方法,即可实现

2021-04-11 22:04:40 45

原创 设计模式之抽象工厂

设计模式之抽象工厂模式:简单说一下我的理解,其实抽象工厂模式跟工厂方法模式还是比较相似的,工厂方法模式其实简单来说,就是将通过抽象类提供的抽象方法,由具体子类去继承它来完成对象的创建,而抽象工厂则是通过接口的形式由子类去实现接口来完成对象的创建话不多说,直接上代码://一个抽象工厂模式的接口public interface AbsFactory {// 提供生成对象的方法 来由不同的子类分别实现public Pizza createPizza(String orderType);}// 北京口

2021-04-11 21:26:26 41

原创 设计模式之工厂模式(工厂方法模式)

工厂方法设计模式介绍:一句话来说,就是将对象的实例化抽象成方法,由具体的子类去实例化项目背景:接之前pizza店的项目,现在有中国的芝士披萨、希腊披萨,还有伦敦的芝士披萨、希腊披萨,由工厂方法设计模式来实现话不多说,直接上代码:写代码之前,先上UML类图思想:OrderPizza,作为一个抽象类,提供了createPizza的抽象方法,由具体的ChinesePizzaOrder、LDPizaaOrder子类分别去实现,这样就实现了创建对象过程的下移,根据具体的需求,由不同的子类去创建不同的pizz

2021-04-02 22:50:41 51

原创 设计模式之工厂模式(简单工厂)

简单工厂模式:专门定义一个类用来创建其它类的实例,被创建的实例通常都具有共同的父类。通过一个案例来描述:假如说:有个披萨店,这个披萨店有芝士披萨、火腿披萨、蔬菜披萨,如果按照传统模式,那么我们其实最先想到的应该是通过new的形式来创建,然后使用的时候想用哪个new哪个就行,这样的缺点也就比较明显了:不利于修改和扩展,因为如果新来了一个其他种类的披萨,那么除了新建一个类之后,在使用方,代码也需要修改,这就违反了ocp原则那么如果用简单工厂来实现,那么代码就会变得很简单,下面附上代码以及描述:UML类图

2021-04-01 22:49:04 134

原创 设计模式单例模式之静态内部类

设计模式之静态内部类下面讲一下设计模式中的单例模式的写法:静态内部类静态内部类:它的优点,1、通过JVM加载类的时候保证了线程安全,2、实现了lazy loading,因为外部类被加载时,内部类是不会被加载的class Singleton{private SIngleton(){}private static class SingletonInstance {private static Singleton INSTANCE = new Singleton();}public static

2021-03-17 23:13:25 91

原创 设计模式单例模式之double check

设计模式之双重判定锁(double check)下面列出一个比较常用的也是我个人最喜欢的一种在多线程的情况下,又能满足lazy loading,效率又高的一种单例模式的写法class Singleton{private Singleton(){}/**在这可能有些小伙伴会问这个volatile这个是干啥的,给出答案:volatile这个关键字的意思,简单来说可以看作是一个轻量的synchronized,它可以在被值更新的时候,实时的更新到内存中*/private static final v

2021-03-17 23:07:59 233

原创 设计模式单例模式之懒汉式

设计模式中的懒汉式懒汉式写法一:class Singleton{//1、同样提供一个私有化的构造器private Singleton(){}//2、定义一个静态的常量private static final Singleton singleton;//3、提供一个共有的方法,返回实例public static Singleton getInstance(){if(singleton == null){singleton = new Singleton();}return singl

2021-03-17 23:00:00 323

原创 设计模式单例模式之饿汉式

设计模式接下来我会更新一系列的设计模式,如果有需要的小伙伴可以关注,大家共同成长一起讨论~fighting!!!!我会将设计模式中每一个模式的代码以及个人见解写在一起,欢迎小伙伴一起探讨 话不多说,直接上干货先给各位小伙伴普及一下啥叫单例模式,(PS:技术大佬就不要挑毛病啦~爱你哟):单例模式简单来说,就是只有一个实例单例模式之饿汉式饿汉式有两个写法,下面将一一列出,欢迎大家指教~饿汉式之一:也就是最常见的写法,采用静态常量的写法,话不多说上代码:(ps:因为新电脑还没有安装环境,先凑合

2021-03-17 22:42:00 87

原创 (Docker)RocketMQ发布updateTopic发生unable to calculate a request signature. error=Algorithm HmacSHA1

docker中安装RocketMQ,并RocketMQ发布updateTopic发生unable to calculate a request signature. error=Algorithm HmacSHA1[root@c1842e12c18d bin]# ./mqadmin updateTopic -n localhost:9876 -t stock -c DefaultCluster...

2019-08-15 18:01:40 1837

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除