码迷,mamicode.com
首页 > 其他好文 > 详细

[编码模式]Execute Around

时间:2015-08-20 21:05:37      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

背景

很多时候,我们访问资源需要关注对资源的锁定、对资源的申请和释放,还有考虑可能遇到的各种异常。这些事项本身与代码的逻辑操作无关,但我们不能遗漏。Execute Around可以帮助我们,只是需要使用者指出我想怎么使用资源就可以。不需要考虑锁、资源申请释放,或者异常,对码农是一种解放。

场景

Execute Around需要定义操作资源的接口,该接口提供使用者来提供具体的实现。模式提供一个执行接口,该接口的实现来对资源使用前的准备工作,以及资源使用后的清理工作。

实例

public interface InputStreamAction
{
    void useStream(InputStream stream) throws IOException;
}

// Somewhere else    

public void executeWithFile(String filename, InputStreamAction action)
    throws IOException
{
    InputStream stream = new FileInputStream(filename);
    try {
        action.useStream(stream);
    } finally {
        stream.close();
    }
}

// Calling it
executeWithFile("filename.txt", new InputStreamAction()
{
    public void useStream(InputStream stream) throws IOException
    {
        // Code to use the stream goes here
    }
});

// Calling it with Java 8 Lambda Expression:
executeWithFile("filename.txt", s -> System.out.println(s.read()));

// Or with Java 8 Method reference:
executeWithFile("filename.txt", ClassName::methodName);


[编码模式]Execute Around

标签:

原文地址:http://my.oschina.net/sulliy/blog/495240

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!