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("做好了一份鸡腿饭!");
}
});
}
(3)lambda
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);
}