通常我们想通过接口实现固定的接口实现某些自定义的业务功能,需实现固定接口并一一编写实现类的功能,过于死板,代码修改过于繁琐,所以可通过装饰类(装饰者模式)来对代码进行优化,实现用户自定义业务代码的功能。
案例:自定义java中的map、filter、reduce等方法
装饰类
public class MyList<T> {
//传入的参数类型List<T>
private List<T> oldList;
//构造方法传参传入变量值
public MyList(List<T> oldList) {
this.oldList = oldList;
}
//怎样定义这个map方法呢?
//map方法的功能是做映射,输入一个T,然后返回一个String
public <R> MyList<R> map(Function<T, R> func) { 类上无R类型,故在返回值类型前要加上<R>对其进行标识
//先定义一个新的List
List<R> nList = new ArrayList<R>();
//对原来的集合进行遍历,
for(T oldWord: oldList) {
//应用传入的逻辑,
R nWord = func.call(oldWord);
//将返回的结果,放入到新的List中
nList.add(nWord);
}
return new MyList(nList);
}
public MyList<T> filter(Function<T