方法作为传入参数

定义方法的抽象类

public abstract class Operation {
    void execute(long result, String data) {};
    void execute(long result, List datas) {
        for (String data: datas) {
            execute(result, data);
        }
    }
}

定义不同的Operation实例对象,有不同的execute函数实现

public class Service {
    
    private static final Operation ADD_OPERATION = new Operation() {
        @Override
        public void execute(long result, String data) {
                // TODO
            }
    };

    private static final Operation SUB_OPERATION = new Operation() {
        @Override
        public void execute(long result, String data) {
            // TODO
        }
    };

    private static final Operation ALL_OPERATION = new Operation() {
        @Override
        public void execute(long result, String data) {
                // TODO
          }
      };

定义使用Operation类对象的地方

public boolean order(String key, String data, Operation operation) throws Exception {
            long result = rpush(key, data);
            operation.execute(result, data);
            return result != 0;
    }
public boolean orderAll(String key, List datas, Operation operation) throws Exception {
            long result = rpush(key, datas);
            operation.execute(result, datas);
            return result != 0;
    }

传入对象,这个对象有重写接口函数,调用接口函数时可以执行不同的方法

order(key1, data1, ADD_OPERATION);
order(key2, data2, SUB_OPERATION);
orderAll(key3, dataList, ALL_OPERATION);

你可能感兴趣的:(方法作为传入参数)