首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对象缓存技术

对象缓存技术
EN

Stack Overflow用户
提问于 2022-11-09 10:27:30
回答 1查看 26关注 0票数 0

假设我有ABC类。C有一个方法longRunningMethod,它需要很长时间才能运行并返回int。类AB都有C作为依赖项,并且需要调用方法longRunningMethod

代码语言:javascript
运行
复制
public class A{
    private C c;
    public A(C c){
        this.c = c;
    }
    
    public void method1(){
        this.c.longRunningMethod();
    }
}
代码语言:javascript
运行
复制
public class B{
    private C c;
    public A(C c){
        this.c = c;
    }
    
    public void method2(){
        this.c.longRunningMethod();
    }
}
代码语言:javascript
运行
复制
public class C{
    
    public int longRunningMethod(){
        ...
    }
}
代码语言:javascript
运行
复制
public class MyProgram{

    public static void main(String[] args){
        C c = new C();
        A a = new A(c);
        B b = new B(c);
        a.method1();
        b.method2()//avoid calling c.longRunningMethod();
    }
}

可以采取哪些方法来避免两次调用longRunningMethod?当然,简单的方法是将AB的构造函数参数更改为int,并在MyProgram中调用longRunningMethod。但是,传递给AB的内容并不那么明显(哪些int是允许的?)

EN

回答 1

Stack Overflow用户

发布于 2022-11-09 12:03:18

代码语言:javascript
运行
复制
public class C{
    private boolean wasCalled = false;
    private int cachedValue;

    public int longRunningMethod(){
        if (!wasCalled) {
            // do your long running job here and set result to cachedValue
            wasCalled = true;
        }
        return cachedValue;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74373311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档