JDK1.8-01行为化参数

1  行为参数化演进

行为参数化:将具体的执行行为以参数化形式传入方法中。已快速适应复杂多变的需求

行为化参数实现方式:

(1)类

<font color=#0099ff size=5 face="STCAIYUN">color=#0099ff size=6 face="黑体"</font>

- 接口定义方法,实现定义具体的行为。方法中存入具体行为执行具体逻辑【策略模式】

缺点:扩展性强

缺点:代码量大

参考代码

参考类图

(2)匿名类

@Test
public void anonyMousClass(){
    CookingRoomClass cookingRoom = new CookingRoomClass();
    cookingRoom.cooking(new CookingFood() {
        @Override
        public void cooking() {
            System.out.println("做好一份汉堡!");
        }
    });
    cookingRoom.cooking(new CookingFood() {
        @Override
        public void cooking() {
            System.out.println("做好了一份鸡腿饭!");
        }
    });
}

3lambda

public static void main(String[] args) {
    List<Apple> apples = filterApples(LambdaTest.apples, (Apple apple) -> "red".equals(apple.getColor()));
    Assert.assertEquals(4,apples.size());
}

(4)泛型参数化+lambda

@Test
public void genericParam(){
    List<Apple> tList = filter(apples, (Apple apple) -> "red".equals(apple.getColor()));
    Assert.assertEquals(4,tList.size());
}
public static <T> List<T> filter(List<T> t,Predicate<T> predicate){
    List<T> tList = new ArrayList<>();
    for (T t1:tList) {
        if(predicate.test(t1)){
            tList.add(t1);
        }
    }
    return tList;
}
public interface Predicate<T> {
    public Boolean  test(T t);
}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值