題外話:把技術(shù)點(diǎn)記錄下來袱瓮,只是為了理清思路免绿,加深理解。讓自己對(duì)知識(shí)點(diǎn)理解更加透徹嘶伟,而使用到工作中合適的場(chǎng)景除嘹。
概述:‘裝飾器模式’写半,從‘裝飾器’三個(gè)字面意思,去靠近理解尉咕,此模式去裝飾(包含)某個(gè)實(shí)體(類)叠蝇,使其和原來不一樣(功能擴(kuò)展,加強(qiáng))年缎。
比較:裝飾器模式和繼承一個(gè)類去擴(kuò)展功能比較相似悔捶,但是裝飾器模式不會(huì)破壞原有類的簽名,而是一個(gè)新的類去包裝原有的類单芜。
代碼:使用裝飾器模式包裝List類(給add()方法加強(qiáng)蜕该,給出提示)
裝飾器類:
package com.example.java8.model.decoration;
import java.util.List;
/**
* 裝飾類
* @param <T>
*/
public class DecorationList<T> {
private List<T> list;
public DecorationList(List<T> list) {
this.list = list;
}
public boolean add(T t) {
boolean flag = false;
try {
flag = this.list.add(t);
System.out.println("添加成功");
} catch (Exception e) {
flag = false;
System.out.println("添加失敗");
}
return flag;
}
}
測(cè)試類:
package com.example.java8.model.decoration;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
public class DecorationTest {
@Test
public void test() {
List<String> list = new ArrayList<>();
DecorationList<String> decorationList = new DecorationList<>(list);
boolean add = decorationList.add("hello");
}
}