设计模式
文章平均质量分 75
zhifeng687
这个作者很懒,什么都没留下…
展开
-
设计模式思维导图
参考:设计模式原创 2022-03-30 18:00:32 · 335 阅读 · 0 评论 -
基于 Spring 实现管道模式的最佳实践
管道模式(Pipeline Pattern)是责任链模式(Chain of Responsibility Pattern)的常用变体之一。在管道模式中,管道扮演着流水线的角色,将数据传递到一个加工处理序列中,数据在每个步骤中被加工处理后,传递到下一个步骤进行加工处理,直到全部步骤处理完毕。PS:纯的责任链模式在链上只会有一个处理器用于处理数据,而管道模式上多个处理器都会处理数据。何时使用管道模式任务代码较为复杂,需要拆分为多个子步骤时,尤其是后续可能在任意位置添加新的子步骤、删除旧的子步骤、交.转载 2016-04-12 11:32:06 · 6744 阅读 · 0 评论 -
责任树模式(责任链模式+策略模式的组合)
1 问题背景最近开发了一个需求,该接口需要根据 p1、p2、p3、version 多个入参的不同组合按照其对应的业务策略给出结果数据。由于该接口已经开发了三期了,每次开发新一期的需求时为了兼容老的业务逻辑,大家都倾向于不删不改只新增,因此这块代码已经产生了一些「坏味道」,函数入口通过不断添加「卫语句」判断 version 的方式跳转到新一期的业务逻辑方法中,而每一期的业务逻辑也是通过 p1、p2、p3 的 if-else 组合形成不同的分支逻辑。这已经是我简化后的表述,总之刚开始对于我这个新同学来说,梳转载 2017-06-16 11:33:43 · 17850 阅读 · 6 评论 -
模板模式之Thread与Runnable
写一个类继承自Thread类,重写run方法。用start方法启动线程。这是使用了模板模式中子类继承父类的方式。 写一个类实现Runnable接口,实现run方法。用new Thread(Runnable target).start()方法来启动。这是使用了模板模式中基于回调接口的方式。原创 2018-06-01 00:52:30 · 501 阅读 · 0 评论 -
动态代理模式和cglib代理模式
Java的三种代理模式概述静态代理模式:代理类和被代理类继承同一个接口;动态代理模式:被代理类继承某个接口;cglib代理模式:被代理类无需继承接口;1.代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思...转载 2018-05-29 10:20:09 · 587 阅读 · 0 评论 -
双重检查锁定(double-checked locking)与volatile实现多线程下的单例模式
单例模式有如下实现方式:[java] view plain copypackage com.zzj.pattern.singleton; public class Singleton { private static Singleton instance; private Singleton() { } public static Single...转载 2016-02-27 12:32:51 · 878 阅读 · 0 评论 -
模板模式之spring的jdbcTemplate
转载:http://www.iteye.com/topic/713770?1306420721 最近一直在研读spring源码和学习设计模式,想把自己的一些领悟与大家分享,前几天发了几篇简单的文章,可能由于文字过于简单,几次被评为新手贴,心中滴汗啊 没办法,工作太忙,大家都知道,写篇文章是要很大精力地~~~~~ 今天恰有时间,把这两天的学习所得与大家分享,尽量写得详细一些,专家饶路走,新手觉得好...转载 2018-05-12 17:02:31 · 2941 阅读 · 4 评论 -
InputStream、InputStreamReader和Reader的关系(适配器模式)
InputStream:得到的是字节输入流,InputStream.read("filename")之后,得到字节流Reader:读取的是字符流InputStreamReader:从字节到字符的桥梁。InputStreamReader(InputStream.read("filename"));reader.read(InputStreamReader(InputStream in));便可从字节...原创 2015-05-23 14:52:23 · 1221 阅读 · 0 评论 -
多线程下的发布订阅模式实现
我们都知道,发布者会实现注册、删除、通知订阅者方法。同时,发布者有一个集合类型的成员变量,用以保存注册的订阅者,在需要通知订阅者时,遍历该集合即可。在多线程环境下,只需在实现注册、删除、通知订阅者方法时,使用synchronized对该集合对象加锁即可。下面以hbase监听configuration变化为例,阐述多线程下的发布订阅模式的代码实现:订阅者接口:package org.apache.h...原创 2016-12-31 14:54:24 · 2886 阅读 · 0 评论 -
装饰器模式之java IO流(FilterOutputStream对用户透明及它的作用)
例如现在有这样一个需求:读取一个文件里面的内容,将文件里的内容所有的小写字母都转换成大写的。这个时候我们就可以通过去扩展IO流去做。package com.unis.io; 2. 3.import java.io.BufferedReader; 4.import java.io.File; 5.import java.io.FileReader; 6.import java.i...原创 2015-12-06 22:05:45 · 723 阅读 · 0 评论 -
JAVA设计模式之单例模式
概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、转载 2016-02-28 23:37:00 · 307 阅读 · 0 评论 -
建造者模式
概述建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式常用于构建复杂的对象。优化后的建造者模式以mybatis的MappedStatement为例:package org.apache.ibatis.mapping;import java.util.ArrayList;import java.util.Collectio...原创 2016-01-11 15:36:31 · 2259 阅读 · 0 评论 -
简单工厂和工厂方法模式
简单工厂和工厂方法模式 简单工厂:一个抽象产品类,派生出多个具体产品类;一个工厂类,每个工厂类可创建多个具体产品类的实例。“一对多”的关系。 工厂方法:一抽象产品类派生出多个具体产品类;一抽象工厂类派生出多个具体工厂类;每个具体工厂类只能创建一个具体产品类的实例。 即定义一个创建对象的接口(即抽象工厂类),让其子类(具体工厂类)决定实例化哪一个类(具体产品转载 2016-01-11 15:10:23 · 588 阅读 · 0 评论 -
Java IO流之装饰模式与适配器模式讲解
转载自:Java IO流之装饰模式与适配器模式讲解 在Java IO流中,我们经常使用的是字节流与字符流,下面附上几张图可以很清楚的了解他们之间的继承关系,图片来源于网络,在此感谢图片的制作者。1、字节流各个类的继承关系:2、字符流各个类个继承关系:一、装饰模式解读:什么是装饰模式呢?就比如有一个瓶子,我为了让它好看点,给它插上些花,这就起到了装饰作用。 在我们的日常使用开发中,经常看到这各...转载 2015-12-06 22:55:40 · 474 阅读 · 0 评论 -
java反射机制
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。但转载 2015-12-23 00:15:30 · 321 阅读 · 0 评论 -
策略模式+ 工厂模式的组合
策略模式(Strategy Pattern)定义了一组策略,分别在不同类中封装起来,每种策略都可以根据当前场景相互替换,从而使策略的变化可以独立于操作者。比如我们要去某个地方,会根据距离的不同(或者是根据手头经济状况)来选择不同的出行方式(共享单车、坐公交、滴滴打车等等),这些出行方式即不同的策略。何时使用策略模式阿里开发规约-编程规约-控制语句-第六条 :超过 3 层的 if-else 的逻辑判断代码可以使用卫语句、策略模式、状态模式等来实现。相信大家都见过这种代码: if (co.转载 2016-01-16 22:05:16 · 510 阅读 · 0 评论 -
通过注解定义规则路由的策略模式
经常在网上看到一些名为“别再if-else走天下了”,“教你干掉if-else”等之类的文章,大部分都会讲到用策略模式去代替if-else。策略模式实现的方式也大同小异。主要是定义统一行为(接口或抽象类),并实现不同策略下的处理逻辑(对应实现类)。客户端使用时自己选择相应的处理类,利用工厂或其他方式。注解实现本文要说的是用注解实现策略模式的方式,以及一些注意点。话不多说,还是以最常 见的订单处理为例。首先定义这样一个订单实体类:@DatapublicclassOrder{...转载 2016-01-16 17:02:04 · 645 阅读 · 0 评论