
求问,像这种多个内部方法都有相同参数 config,有没有办法做一些抽取,让 fun1/2/3/4 只保留自己的参数,总觉得每个方法参数都有 config 蛮蠢的。。。
================================================================
import org.springframework.stereotype.Component;
@Component public class TestService {
public void handle() { Config cOnfig= init(); fun1(config, 1); fun2(config, "t"); fun3(config, 0D); fun4(config); } private Config init() { // ... } private void fun1(Config config, Integer i) { // ... } private void fun2(Config config, String s) { // ... } private void fun3(Config config, Double d) { // ... } private void fun4(Config config) { // ... } }
1 ywcjxf1515 Apr 16, 2019 via iPad 在 fun1 到 fun4 里直接用实例变量 config。 |
2 ywcjxf1515 Apr 16, 2019 via iPad 看错了,config 不是实例变量。。 |
3 Mistwave Apr 16, 2019 via iPhone self.cOnfig= init() |
4 Mistwave Apr 16, 2019 via iPhone 不好意思 Java 是 this |
5 lhx2008 Apr 16, 2019 没看懂,Spring 注入不行吗 |
6 zhongchengyong Apr 16, 2019 是否可以:声明为成员变量,在 handle()中初始化该成员变量,然后在各个 funx()中使用 |
7 yonats OP |
9 lhx2008 Apr 16, 2019 |
10 lhx2008 Apr 16, 2019 ↑ 每个函数只能用一个 config,具体你可以重新设计一下类的结构,不知道你的需求 |
11 yonats OP @lhx2008 是这样的,config 是从缓存中拿到的一些配置,每次请求 handle 获取的配置可能都不一样,不应该叫 init 应该是 getConfig 这个样子 |
12 zhongchengyong Apr 16, 2019 @yonats init()返回新的 config 对象不会出现你说的问题吧?你详细说一下? |
14 twoyuan Apr 16, 2019 柯里化 |
16 mskf Apr 16, 2019 可以写一个内部类 ``` private void handle(){ Funs funs = new Funs(config); funsfun1(i); ... } private class Funs{ private Object config; Funs(config){ this.cOnfig= config } fun1(Integer i)... fun2(String s)... } ``` 如果方法是公有的还可以用类似反射来写,比较接近动态语言的方式,或者用注解注入 |