![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 80
寻找那道光
这个作者很懒,什么都没留下…
展开
-
jdk和mysql源码中的桥接模式
当一件事情有多个维度的变化的可能性时,桥接模式就派上用场了。如下图,一个消息系统中,发送消息的方式 和消息的类型都是可以独立变化的,两个维度的变化互不影响,比如消息可以通过邮件发送,而消息类型可以使普通消息,加急消息, 还可以通过短信来发送普通消息或者加急消息,这样的系统就很适合桥接模式来实现。每个独立变化的维度分别抽象出一个独立的接口,然后通过一个“桥”来持有这两个维度的顶层接口,来实现自己的业务逻辑:消息发送接口:package com.lchtest.pattern.birdge.messag原创 2022-04-03 11:33:35 · 2561 阅读 · 0 评论 -
设计模式-观察者模式
定义观察者模式又称为发布-订阅模式,模型-视图模式,源-监听器模式,它定义一种一对多的依赖关系,一个主题对象可以被多个观察者对象同时监听,使得主题对象的状态一旦发生改变时,所有依赖于它的对象都会得到通知并被自动更新、使用场景一个抽象模型包含两个方面的内容,其中一个方面依赖于另一个方面其他一个或多个对象的变化依赖于另外一个对象的变化需要实现广播机制的功能,无需知道具体的接收者,只需要分发...原创 2020-03-27 22:07:58 · 64 阅读 · 0 评论 -
设计模式-中介者模式
中介者模式定义中介者模式通过一个中介对象封装一系列的对象交互,中介者是各个对象不需要显式地相互作用,从而使他们松散耦合。中介者模式使用场景多个类相互耦合,形成了网状结构,则考虑使用中介者模式进行优化:系统中对象之间存在复杂的引用关系,产生的相互依赖关系混乱,难以理解,类似Dubbo的服务治理的概念,从服务之间相互调用的网状依赖关系,通过dubbo变成一个星形结构,每个服务都与注册中心打交...原创 2020-03-25 08:17:28 · 109 阅读 · 0 评论 -
设计模式-状态机模式
定义状态模式也称为状态机模式,时允许对象在内部发生改变时改变它的行为。状态模式将类的状态与行为进行绑定,类的行为是由状态决定的,不同状态下有不同的行为,意图让一个对象其内部状态改变时,它的行为也发生变化结构如上图,状态模式包含下面几个角色抽象状态角色定义该状态下的行为,行为可以是一个或多个具体状态角色具体实现该状态对应的行为,在必要时,需要进行状态切换环境类角色顶一个客户端...原创 2020-03-25 07:53:48 · 564 阅读 · 0 评论 -
设计模式-委派模式
委派模式定义委派模式是允许对象组合实现与继承相同的代码复用,其基本作用是负责任务调度和分配任务,是一种全权的静态代理,与代理模式不同的是委派模式注重结果,而代理模式注重过程。委派模式结构委派模式应用场景比如老板给项目经理下达任务,项目经理根据项目成员擅长的业务技能分派工作任务,待员工完成任务后,由项目经理把结果汇报给老板。...原创 2020-03-22 22:26:35 · 100 阅读 · 0 评论 -
设计模式-责任链模式
1. 责任链模式定义责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。2. 使用场景有多个对象可以处理一个请求,哪个对象处理该请求由运行时刻自动确定。可动态指定一组对象处理请求,或添加新的处理者。...原创 2020-03-21 15:34:07 · 169 阅读 · 0 评论 -
设计模式-适配器模式
适配器模式定义适配器模式是将一个类的接口变成客户端所期望的另一种接口,从而使原本因接口不匹配而导致无法在一起工作的两个类能够一起工作、适配器模式使用场景提供一个转换器,将当前系统存在的一个对象转化为客户端能够访问的接口对象,适用于以下业务场景:已经存在的类,它的方法和需求不匹配的情况适配器么送hi不是软件设计阶段考虑的设计模式,它是随着软件维护,由于不同产品,不同厂家造成功能类似而接口...原创 2020-03-17 23:49:11 · 117 阅读 · 0 评论 -
设计模式-桥接模式
桥接模式概念桥接模式,是将抽象部分与它的具体实现部分解耦,使得它们都可以独立的变化。桥接模式的意义 桥接模式的主要目的是通过组合的方式而不是继承的方式建立起两个类之间的联系;桥接模式类似于多重集继承方案,但是多重继承方式往往违背了类的单一职责原则(通过继承获取了一个类本不该它具有的功能,且父类修改会直接影响到子类),复用性较差,桥接模式是比多重继承更好的替代方案,它的核心在于将抽象和...原创 2020-03-16 23:55:24 · 192 阅读 · 0 评论 -
设计模式-策略模式
策略模式策略模式 将定义的算法家族分别封装起来,让他们之间可以互相替换,让算法的变化不影响到使用算法的用户。策略模式使用场景最典型的使用场景就是移动互联网支付,当我们下单后付款时,需要选择支付方式,如下图中的火车票的支付,支付界面提供了不同的支付方式,具体的支付逻辑则根据用户选择的支付方式来完成。策略模式可以解决在有多种相似算法的情况下,使用if-else 所带来的复杂性和臃肿性。适用于...原创 2020-03-15 22:59:04 · 138 阅读 · 0 评论 -
设计模式-组合模式
1. 组合模式概念组合模式(Composite Pattern)也称为整体-部分(Part-Whole)模式,它的宗旨是通过将单个 对象(叶子节点)和组合对象(树枝节点)用相同的接口进行表示,使得客户对单个对象和组合对象的 使用具有一致性,属于结构型模式...原创 2020-03-12 23:06:06 · 66 阅读 · 0 评论 -
设计模式-享元模式
1. 享元模式定义 面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和 对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。享元模式正是为解决这 一类问题而诞生的。 享元模式(Flyweight Pattern)又称为轻量级模式,是对象池的一种实现。类似于线程池,线程池可以避免不停的创建和销毁多个对象,消耗性能。提供了减少对...原创 2020-03-10 23:40:58 · 108 阅读 · 0 评论 -
设计模式-装饰器模式
装饰器模式1. 装饰器模式定义装饰器模式(Decorator Pattern),也称为包装模式(Wrapper Pattern)是指在不改变原有对象 的基础之上,将功能附加到对象上,提供了比继承更有弹性的替代方案(扩展原有对象的功能),属于 结构型模式。原文:Attach additional responsibilities to an object dynamically keepin...原创 2020-03-07 16:59:42 · 169 阅读 · 0 评论 -
设计模式-门面模式
门面模式(Facade Pattern)又叫外观模式,提供了一个统一的接口,用来访问子系统中的一群接 口。其主要特征是定义了一个高层接口,让子系统更容易使用,属于结构性模式。原文:Provide a unified interface to a set of interfaces in a subsystem.Facade defines a higher-level interfac...原创 2020-03-07 15:42:50 · 78 阅读 · 0 评论 -
设计模式-动态代理模式
代理模式1.代理模式概念代理模式(Proxy Pattern)是指为其他对象提供一种代理,以控制对这个对象的访问,属于结构型 模式。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标 对象之间起到中介的作用。官方原文:Provide a surrogate or placeholder for another object to control acces...原创 2020-03-03 00:07:31 · 191 阅读 · 0 评论 -
设计模式-建造者模式
建造者模式1.定义将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示2.使用场景当一个对象的创建过程很复杂,类的构造函数参数个数比较多,而且这些参数有些是可选的参数,考虑使用构造者模式。举例:例如我们现在有如下一个类计算机类Computer,其中cpu与ram是必填参数,而其他3个是可选参数,那么我们如何构造这个类的实例呢,通常有两种常用的方式:public c...原创 2020-03-01 11:05:37 · 118 阅读 · 0 评论 -
设计模式-原型模式
原型模式本质对已经存在的对象模型进行拷贝应用场景类初始化消耗资源较多的情况下new对象非常繁琐的过程构造函数复杂循环体中产生大量对象时??分类:浅克隆特点:拷贝的是对象的引用,而不是对象的值。如果克隆的对象发生了变化,原对象也会发生改变,对代码存在风险实现:JDK提供了Cloneable接口,用户只需要实现这个接口,重写Object类的clone方法,然...原创 2020-02-29 23:41:40 · 79 阅读 · 0 评论 -
设计模式-注册式单例2-容器式单例与ThreadLocal单例
注册式单例的另一种写法,容器缓存package com.lchtest.singleton.register;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;public class ContainerSingleton { private static Map<String, Obj...原创 2020-02-28 22:31:37 · 128 阅读 · 0 评论 -
设计模式-注册式单例1-枚举式单例
注册式单例1.枚举式单例注册式单例又称为登记式单例,就是将每一个实例都登记到某一个地方,使用唯一的标 识获取实例。注册式单例有两种写法:一种为容器缓存,一种为枚举登记。先来看枚举 式单例的写法,来看代码,创建 EnumSingleton 类package com.gupaoedu.vip.pattern.singleton.register;/** * 注册式单例方式1:枚举式单例 ...原创 2020-02-27 08:25:01 · 187 阅读 · 0 评论 -
设计模式- 饿汉式单例与懒汉式单例
1. 单例模式应用场景单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建型模式。单例模式在现实生活中应用也非常广泛。 例如,国家主席、公司 CEO、部门经理等。在 J2EE 标准中,ServletContext、 ServletContextConfig 等;在 Spring 框架应用中 ApplicationCont...原创 2020-02-26 08:18:37 · 167 阅读 · 0 评论 -
设计模式-看懂UML类图
转自https://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html#id3这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系; 能看懂类图中各个类之间的线条、箭头代表什么意思后,也就足够应对 日常的工作和交流; 同时,我们应该能将类图所表达的含义和最终的代码对应起来; 有了这些知识,看后面章节的设计模式结构图就没...转载 2020-02-22 10:53:44 · 295 阅读 · 0 评论 -
设计模式-软件设计原则
1.开闭原则2.单一职责原则3.依赖倒置原则4.接口隔离原则5.迪米特法则6.合成复用原则原创 2020-02-22 09:43:07 · 160 阅读 · 0 评论