这篇文章是关于在Java中实现贷款模式的。

用例

在保存资源的代码与访问资源的代码之间实现分离,从而使访问代码无需管理资源。 当我们编写用于读取/写入文件或查询SQL / NOSQL数据库的代码时,上述用例适用。 在AOP的帮助下,肯定有API处理了此问题。 但是我认为,如果基于模式的方法可以帮助我们处理此类用例,那便是我了解贷款模式 (又称为贷方借出模式)的地方

它能做什么

贷款模式采用“借贷方式”,即保持对调用代码的资源“借贷”的代码。 一旦借方 (访问资源的代码)使用了借方 (没有兴趣),出借方 (即保存资源的代码)就对资源进行管理。 让我们进入贷方代码:

/*** This class is an illustration of using loan pattern(a.k.a lender-lendee pattern) * @author prassee*/
public class IOResourceLender {/*** Interface to write data to the buffer. Clients using this* class should provide impl of this interface * @author sysadmin**/public interface WriteBlock {void call(BufferedWriter writer) throws IOException;}/*** Interface to read data from the buffer. Clients using this* class should provide impl of this interface* @author sysadmin**/public interface ReadBlock {void call(BufferedReader reader) throws IOException;}/*** method which loans / lends the resource. Here {@link FileWriter} is the * resource lent. The resource is managed for the given impl of {@link WriteBlock}*  * @param fileName* @param block* @throws IOException*/public static void writeUsing(String fileName, WriteBlock block)throws IOException {File csvFile = new File(fileName);if (!csvFile.exists()) {csvFile.createNewFile();}FileWriter fw = new FileWriter(csvFile.getAbsoluteFile(), true);BufferedWriter bufferedWriter = new BufferedWriter(fw);block.call(bufferedWriter);bufferedWriter.close();}/*** method which loans / lends the resource. Here {@link FileReader} is the * resource lent. The resource is managed for * the given impl of {@link ReadBlock}*  * @param fileName* @param block* @throws IOException*/public static void readUsing(String fileName, ReadBlock block)throws IOException {File inputFile = new File(fileName);FileReader fileReader = new FileReader(inputFile.getAbsoluteFile());BufferedReader bufferedReader = new BufferedReader(fileReader);block.call(bufferedReader);bufferedReader.close();}
}

贷方代码包含一个FileWriter,资源,我们还期望实现WriteBlock,以便writeUsing方法仅在管理资源内的WriteBlock接口上调用该方法。 在客户端(lendee)一侧,我们提供了WriteBlock的匿名实现。 这是lendee代码,Iam只是给您一个方法,您可以在自己喜欢的类中使用它。

public void writeColumnNameToMetaFile(final String attrName,String fileName, final String[] colNames) throws IOException {IOResourceLender.writeUsing(fileName,new IOResourceLender.WriteBlock() {public void call(BufferedWriter out) throws IOException {StringBuilder buffer = new StringBuilder();for (String string : colNames) {buffer.append(string);buffer.append(',');}out.append(attrName + ' = ' + buffer.toString());out.newLine();}});}

该示例将借出模式用于简单的文件IO操作。 但是,可以通过提供抽象的贷方和借贷方来进一步改进此代码。本文的代码在以下要点中共享:https://gist.github.com/4481190,我欢迎您的评论和建议!

参考: Scala上Prassee上的 JCG合作伙伴 Prasanna Kumar提供的Java贷款模式(又称贷方借出模式) 。

翻译自: https://www.javacodegeeks.com/2013/01/loan-pattern-in-java-a-k-a-lender-lendee-pattern.html

Java中的贷款模式(又名贷方承租人模式)相关推荐

  1. java中selenium设置chrome浏览器为开发者模式与IP代理

    java中selenium设置chrome浏览器为开发者模式与IP代理 前言 代码 前言 之前为公司写了个爬虫项目,有时候为了绕过网站的反爬机制需要用到ip代理以及设置浏览器为开发者模式,看了一些se ...

  2. java中引导页面的,设计模式之模板模式引导篇

    在讲模板模式原理前,我们按照惯例,先来个生活中例子.茶馆需要开发一个自动的泡咖啡和泡茶的程序. 来源:凯哥Java(kaigejava) 我们先来看看泡咖啡和泡茶的步骤: 我们根据上图写代码实现: 泡 ...

  3. java中synchronized同步锁实现生产者消费者模式

    synchronized介绍 一.基本概念 synchronized关键字是java里面用来在多线程环境下保证线程安全的同步锁:java里面有对象锁和类锁,对象锁是用在对象实例的方法上或者一个对象实例 ...

  4. java中factory方法_Java的23中设计模式--工厂方法模式(Factory Method)

    1.普通工厂模式 工厂类 /*** @Title Factory.java * @Package factory.factory1 * @date 2015-1-22 上午10:16:02 *@ver ...

  5. Java中使用枚举类和switch实现映射存储的类似策略模式实现定制化流程

    场景 设计模式-策略模式在Java中的使用示例: 设计模式-策略模式在Java中的使用示例_java 策略模式示例_霸道流氓气质的博客-CSDN博客 上面讲了策略模式在Java中的使用示例. 但是在有 ...

  6. Java中的生成器设计模式

    Java 中的 Builder设计模式是一种创建模式,即用于创建对象,类似于 工厂方法设计模式 ,这也是创建设计模式. 在学习任何设计模式之前,我建议先找出特定设计模式要解决的问题. 众所周知, 必要 ...

  7. Java中的正则表达式 - Java Regex示例

    Java中的正则表达式 - Java Regex示例 欢迎使用Java中的正则表达式.它在Java中也称为Regex.当我开始编程时,java正则表达式对我来说是一场噩梦.本教程旨在帮助您掌握Java ...

  8. 组合模式 桥接模式 java_java设计模式5.组合模式、门面模式、享元模式、桥接模式...

    组合模式 在面向对象的语言中,树结构有着巨大的威力,一个基于继承的类型的等级结构便是一个数结构,一个基于合成的对象结构也是一个数结构.组合模式将部分与整体的关系用树结构表示出来,使得客户端把一个个单独 ...

  9. java设计模式中不属于创建型模式_23种设计模式第二篇:java工厂模式定义:工厂模式是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式...

    23种设计模式第二篇:java工厂模式 定义: 工厂模式是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 工厂模式主要是为创建对象提供过渡接口, ...

最新文章

  1. 为什么栈和堆的生长方向不一样
  2. Old News PDC2003
  3. python元类简述
  4. linux命令窗口颜色,如何修改ssh命令行下登录时的颜色
  5. python logging模块 默认_python logging模块
  6. mysql 按类型查询个数和总数
  7. Android strings.xml资源文件 使用技巧
  8. python给矩阵赋值_python 实现矩阵旋转
  9. 高效办公之高效文件管理极速检索:只需1秒找到所需文件
  10. latex表格生成神器--教你如何将excel变成latex格式--教你如何做三线图
  11. 关于nubia z9 NX508J notification 不显示的问题
  12. ERROR Error validating install location: Distro ‘rhe17‘ does not exist in our dictionary
  13. msg1500说明书_MSG1500刷机笔记
  14. Matlab 多层(multi-level)小波分析(dwt,dwt2)
  15. 多线程练习(龟兔赛跑)
  16. SQLServer2000的JDBC驱动
  17. [F2F] Java基础 (JDK特性/集合/IO/锁)
  18. 嵌入式开发(五):海思Hi3559AV100交叉编译boost
  19. ? ?. ?? ??=的用法
  20. 给定三角形三边,如何判断该三角形的形状

热门文章

  1. python长整数相乘_python写的大整数相乘的方法
  2. sql server累计求和函数_SQL基础--SQL高级功能
  3. 编译报错+解决方法:错误: 找不到符号
  4. JDBC入门案例及相关API概述
  5. cassandra数据备份_Cassandra中的数据建模
  6. cassandra使用心得_避免在Cassandra中使用清单
  7. enum.values_占用内存的Enum.values()方法
  8. java ee7帮助文档_帮助推动Java EE向前发展
  9. cdi-api_使用CDI简化JAX-RS缓存
  10. 在Eclipse中使用Java 12