![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
进击的豆子
这个作者很懒,什么都没留下…
展开
-
设计模式的六大原则
开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。里氏代换原则(Liskov Substitution Principle)里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则.原创 2020-08-25 15:08:04 · 102 阅读 · 0 评论 -
设计模式第13篇,工厂模式
工厂模式什么是工厂模式实现了创建者和调用者分离,工厂模式分为简单工厂、工厂方法、抽象工厂模式工厂模式好处工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。利用工厂模式可以降低程序的耦合性,为后期的维护修改提供了很大的便利。将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。工厂与容器概念工厂模式分类简单工厂模式简单工厂模式相当于是一个工厂中有各种产品,创建在一个类中,客户无需知道具体产品的名称,只需要知道产品...原创 2020-08-25 10:08:47 · 99 阅读 · 0 评论 -
设计模式第12篇适配器模式
适配模式什么是适配器在设计模式中,适配器模式(英语:adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。适配器分类适配器分为,类适配器、对象适配、接口适配方式类适配器方式采用继承方式,对象适配方式使用构造函数传递适配器案例我们就拿日本电饭煲的例子进行说明,日本电饭煲电源接口标准是110V电压,而中国标准电...原创 2020-08-24 10:14:06 · 88 阅读 · 0 评论 -
设计模式第11篇原型模式
原型模式什么是原型模式克隆原型模式是一个创建型的模式。原型二字表明了改模式应该有一个样板实例,用户从这个样板对象中复制一个内部属性一致的对象,这个过程也就是我们称的“克隆”。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效。原型模式应用场景类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等,通过原型拷贝避免这些消耗。(2)通过new产生的一个对象需要非常繁琐的...原创 2020-08-24 09:23:37 · 104 阅读 · 0 评论 -
设计模式第10篇建造者模式
建造者模式什么是建造者模式建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。建造者模式通常包括下面几个角色:1、Builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉..原创 2020-08-23 15:47:08 · 105 阅读 · 0 评论 -
设计模式第9篇,外观模式,门面模式
外观模式外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。介绍意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。何时使用:1、客户.原创 2020-08-23 15:13:45 · 76 阅读 · 0 评论 -
设计模式第8篇模板模式
模板模式介绍意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。主要解决:一些方法通用,却在每一个子类都重新写了这一方法。何时使用:有一些通用的方法。如何解决:将这些通用算法抽象出来。关键代码:在抽象类实现,其他步骤在子类实现。应用实例:1、在造房子的时候,地基、走线、水管都一样,只有在建筑的后期才有加壁橱加栅栏等差异。优点:1、封装不变部分,扩展可变部分。 2、提取公共代码,便于维护。 3、..原创 2020-08-23 14:29:05 · 84 阅读 · 0 评论 -
第7篇,策略模式
策略模式基本概念策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理,最终可以实现解决多重if判断问题。1.环境(Context)角色:持有一个Strategy的引用。2.抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。3.具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。定义策略接口->实现不同的策略类->利用多态或其他方式调用策略抽...原创 2020-08-13 17:01:58 · 180 阅读 · 0 评论 -
第6篇,责任链模式
基于责任链实现权限框架责任链基本概念客户端发出一个请求,链上的对象都有机会来处理这一请求,而客户端不需要知道谁是具体的处理对象。这样就实现了请求者和接受者之间的解耦,并且在客户端可以实现动态的组合职责链。使编程更有灵活性。定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。其过程实际上是一个递归调用。要点主要是: 1、有多个对象共同对一个任务进行处理。 2、这些对...原创 2020-08-13 16:50:16 · 179 阅读 · 0 评论 -
第五篇,单例模式
单例基本概念在当前Jvm中只会有一个该实例对象单例应用场景项目中定义的配置文件 Servlet对象默认就是单例 线程池、数据库连接池 Spring中Bean对象默认就是单例 实现网站计数器 Jvm内置缓存框架(定义单例HashMap) 定义枚举常量信息单例优缺点 优点:能够节约当前堆内存,不需要频繁New对象,能够快速访问。 缺点:当多个线程访问同一个单例对象的时候可能会存在线程安全问题。单例是否可以被破解在Jvm中只能存在一个实例...原创 2020-08-13 15:43:25 · 104 阅读 · 0 评论 -
第四篇,观察者模式
观察者模式基本概念一个对象状态改变,通知给其他所有的对象观察者模式的应用场景Zk的事件监听、分布式配置中心刷新配置文件、业务中群发不同渠道消息观察者模式的类图简单的实现ObServer观察者定义ObServer接口public interface MayiktObServer {void sendMsg(JSONObject jsonObject);}@Componentpublic class EmailServer implements Mayikt...原创 2020-08-12 20:49:03 · 127 阅读 · 0 评论 -
第三篇,装饰模式
装饰模式基本的概念不改变原有代码的基础之上,新增附加功能装饰模式应用场景多级缓存设计、mybatis中一级与二级缓存、IO流装饰者模式定义(1)抽象组件:定义一个抽象接口,来规范准备附加功能的类(2)具体组件:将要被附加功能的类,实现抽象构件角色接口(3)抽象装饰者:持有对具体构件角色的引用并定义与抽象构件角色一致的接口(4)具体装饰:实现抽象装饰者角色,负责对具体构件添加额外功能。装饰与代理区别装饰模式对我们的装饰对象实现增强,而代理模式及对我们目标对象实.原创 2020-08-12 16:39:50 · 116 阅读 · 0 评论 -
第二篇,cglib的实现原理, @async失效之谜
Cglib动态代理底层源码分析Cglib依赖于ASM字节码技术,直接生成class文件,在采用类加载器读取到程序中,使用fastclass对被代理类的方法建立索引文件不需要依赖于反射查找到目标方法,所以效率比Jdk动态代理要高FastClass机制public class MayiktFastclass { /** * 根据索引查找到目标方法 * * @param index * @param obj * @para...原创 2020-08-12 10:34:27 · 869 阅读 · 0 评论 -
第一篇文章,设计模式和动态代理模式
设计模式的分类创建型模式工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式行为模式策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。什么是代理模式代理模式主要对我们方法执行之前与之后实现增强代理模式应用场景日志的采集 权限控制 实现aop Mybatis mapper Spring的事务 全原创 2020-08-10 23:52:29 · 179 阅读 · 0 评论