Java 设计模式
本专栏存放的是设计模式相关的blog
码农飞哥
csdn博客专家,讯飞程序员,影刀高级RPA工程师,几十款RPA工具等你拿 1736334084
展开
-
设计模式学习12----责任链模式
责任链模式定义责任链模式(Chain of Responsibilty Pattern)避免请求发送者与接收者耦合在一起,让多个对象处理器都有可能接收请求,将这些对象处理器连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。责任链模式是属于行为型模式。责任链模式的核心就是设计好一个请求链以及链结束的标识。下面先看一个责任链的demo。责任链模式的demo日志框架中,日志按照级别分为...原创 2020-02-20 14:44:12 · 1932 阅读 · 0 评论 -
设计模式学习11----装饰者模式
定义装饰者模式也称为包装模式(Wrapper Pattern),属于结构型设计模式。在不改变原类文件以及不使用继承的情况下,动态地将责任附加到对象中,从而实现动态扩展一个对象的功能。它通过创建一个包装对象,也就是装饰来包裹真实对象。结构类图角色抽象组件(Component): 定义装饰方法的规范被装饰者(ConcreteComponent): Component的具体实现,也就是我...原创 2019-05-05 23:47:54 · 1382 阅读 · 0 评论 -
设计模式学习10----建造者模式
前言这些天在阅读MyBatis的源码,发现MyBatis源码中运用了很多设计模式,例如:模板模式,建造者模式,装饰器模式。其中最常用的就是建造者模式。下面我们就来学习下建造者模式。建造者模式建造者模式结构图及角色建造者模式中的主要角色如下:建造者(Builder)接口:Builder接口用于定义构建产品对象的各部分的行为。具体建造者(ConcreteBuilder)角色:直接创建产...原创 2019-04-30 08:15:00 · 1420 阅读 · 0 评论 -
设计模式学习09----之策略模式
概述今天接着学习设计模式,今天要学习的模式是策略模式。PS: 最近有点懈怠了。沉迷于业务代码不能自拔,自己的学习进程被中断了,实在是不应该。闲话不多说,我们接着看看策略模式。引子一个比较典型的策略模式的应用场景是:商场的促销活动,不同的促销活动我们可以编写不同的算法。定义与结构策略模式:它定义了算法族,分别封装起来,让它们之间可以互相替换。此模式让算法的变化,不会影响到使用算法的客户。类图 我们来原创 2018-04-23 07:05:03 · 961 阅读 · 1 评论 -
设计模式学习08----之代理模式
概述今天接着学习设计模式,今天要学习的模式是代理模式。定义与结构代理模式动态代理参考原创 2018-05-28 16:43:05 · 1084 阅读 · 0 评论 -
设计模式学习07----之装饰者模式
概述上一篇我们学习了适配器模式,今天我们接着学习装饰模式。定义和结构装饰者模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供比继承更有弹性的替代方案 装饰模式的角色有: 1. 抽象组件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。 2. 具体组件(ConcreteComponent)角色:定义一个将要接收附加责任的类 3. 装饰者(D...原创 2018-04-11 15:21:15 · 1003 阅读 · 0 评论 -
设计模式学习06----之适配器模式
概述适配器模式,将一个类的接口转化成客户希望的另外一种接口。适配器模式也是一个常用的模式。 生活中最明显的例子就是: 1. 通过变压器对电力进行变压。此处的变压器就是一个适配器 2. 还有就是电脑中USB接口通过转化器转化为Type_C接口等。适配器模式可分为:类适配器模式;对象适配器模式;接口适配器模式应用场景系统需要使用现有的类,而这些类的接口不符合系统的需要。想...原创 2018-04-10 18:22:38 · 1121 阅读 · 0 评论 -
设计模式学习05----之单例模式
单例模式,是我们最常用也最熟悉的一种设计模式,其使用要注意线程安全。定义单例模式:顾名思义,就是在应用中有且只有一个实例。一般类似于计数器类的都必须是单例,多例会导致计数结果不准。 一般而言,其分为饿汉式和懒汉式。懒汉式懒汉式:顾名思义,就是不在系统加载时创建类的实例。而是在调用时才去一次性创建。 demo如下:package com.singleton;/...原创 2018-04-10 12:42:36 · 978 阅读 · 0 评论 -
设计模式学习04----之简单工厂模式以及工厂方法模式以及抽象工厂模式
不管简单工厂模式,工厂方法模式还是抽象工厂模式,他们具有相似的特性,所以他们的适用场景也是类似的。首先,作为一种创建型模式,在任何需要生成复杂对象的地方。都可以使用工厂方法模式,有一点需要注意的是复杂对象适合适用工厂模式,而简单对象,特别是只需要通过new 就可以完成创建的对象,无需适用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。其次,工厂模式是一种典型的解耦模式,迪米特法则在工厂模式中的表现的尤其明显。例如调用者自己组装增加依赖关系时,可以考虑试用工厂模式。将会大大降低对象之原创 2018-04-10 06:48:13 · 1083 阅读 · 0 评论 -
设计模式学习03----之组合模式
现在我准备采用源码驱动设计模式的学习方式来学习。因为junit框架中用到了组合模式,现在我们就对组合模式进行一下分析。我准备从以下几个方面来分析组合模式。 1. 定义与结构 2. 透明性与安全性 3. 该模式在junit中的应用定义与结构组合模式的定义:将对象以树形结构组织起来,以达到“部分-整体”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。 从定义中可以得到使用组合模原创 2018-03-25 13:33:23 · 972 阅读 · 0 评论 -
设计模式学习02----之命令模式
今天接着来学习设计模式,还是依照源码用到的来学习。 命令模式作为一种常用的设计模式,让我们一起来揭开其面纱。引言典型的餐厅运作模式就是一个命令模式,顾客下单之后,服务员接收到订单之后,将订单传递给后厨,厨师按照订单内容做菜。定义与结构命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。类图 从类图中我们可以看出有如下三种角色: 1. R原创 2018-03-28 07:12:41 · 994 阅读 · 0 评论 -
设计模式学习01----之观察者模式
设计模式对阅读源码的重要性不言而喻,所以,我准备一边阅读源码一边学习设计模式。原创 2018-03-25 21:05:29 · 1244 阅读 · 0 评论