实现树状结构_组合模式 - 树状结构的优雅实现
生活随笔
收集整理的這篇文章主要介紹了
实现树状结构_组合模式 - 树状结构的优雅实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在編程實踐中,經常會遇到樹狀結構的場景,比如我們的瀏覽器窗口,比如文件系統。
那么,在處理樹狀結構的時候有什么較好的方式呢?
現在,我們就來學習一種利用組合模式的方法。
如上圖所示,我們通過程序輸出的方式模擬窗口渲染的過程。
下面直接上代碼,首先定義一個接口,所有的組件都需要實現這個接口。
public interface ViewTree {void draw(); }定義窗口類:
public class TreeWindow implements ViewTree {private String windowName;private List<ViewTree> subTree;public TreeWindow(String windowName) {this.subTree = new ArrayList<>();this.windowName = windowName;}@Overridepublic void draw() {System.out.println("開始渲染:WinForm("+windowName+")");for (ViewTree viewTree : subTree){viewTree.draw();}}public void addSub(ViewTree viewTree){subTree.add(viewTree);} }定義圖片組件類:
public class TreePicture implements ViewTree {private String pictureName;public TreePicture(String pictureName) {this.pictureName = pictureName;}@Overridepublic void draw() {System.out.println("開始渲染:Picture("+pictureName+")");} }定義Botton組件類:
public class TreeButton implements ViewTree {private String buttonName;public TreeButton(String buttionName) {this.buttonName = buttionName;}@Overridepublic void draw() {System.out.println("開始渲染:Buttion("+ buttonName +")");} }定義Frame組件類:
public class TreeFrame implements ViewTree {private String frameName;private List<ViewTree> subTree;public TreeFrame(String frameName) {this.frameName = frameName;this.subTree = new ArrayList<>();}@Overridepublic void draw() {System.out.println("開始渲染:Frame("+ frameName +")");for (ViewTree viewTree : subTree){viewTree.draw();}}public void addSub(ViewTree viewTree){subTree.add(viewTree);} }定義Lable組件類:
public class TreeLable implements ViewTree {private String lableName;public TreeLable(String lableName) {this.lableName = lableName;}@Overridepublic void draw() {System.out.println("開始渲染:Lable("+ lableName +")");} }定義TextBox組件類:
public class TreeTextBox implements ViewTree {private String textBoxName;public TreeTextBox(String textBoxName) {this.textBoxName = textBoxName;}@Overridepublic void draw() {System.out.println("開始渲染:TextBox("+ textBoxName +")");} }定義PasswordBox組件類:
public class TreePasswordBox implements ViewTree {private String passwordBoxName;public TreePasswordBox(String passwordBoxName) {this.passwordBoxName = passwordBoxName;}@Overridepublic void draw() {System.out.println("開始渲染:PasswordBox("+ passwordBoxName +")");} }定義CheckBox組件類:
public class TreeCheckBox implements ViewTree {private String checkBoxName;public TreeCheckBox(String checkBoxName) {this.checkBoxName = checkBoxName;}@Overridepublic void draw() {System.out.println("開始渲染:CheckBox("+ checkBoxName +")");} }定義LinkLable組件類:
public class TreeLinkLable implements ViewTree {private String linkLableName;public TreeLinkLable(String linkLableName) {this.linkLableName = linkLableName;}@Overridepublic void draw() {System.out.println("開始渲染:LinkLable("+ linkLableName +")");} }最后定義Main類,組裝窗口:
public class Main {public static void main(String[] args){//初始化窗口TreeWindow window = new TreeWindow("WINDOW窗口");//window添加組件TreePicture picture = new TreePicture("LOGO圖片");TreeButton login = new TreeButton("登錄");TreeButton register = new TreeButton("注冊");TreeFrame frame = new TreeFrame("FRAME1");window.addSub(picture);window.addSub(login);window.addSub(register);window.addSub(frame);//frame添加組件TreeLable userNameLable = new TreeLable("用戶名");TreeTextBox userNameBox = new TreeTextBox("文本框");TreeLable passwordLable = new TreeLable("密碼");TreePasswordBox passwordBox = new TreePasswordBox("密碼框");TreeCheckBox checkBox = new TreeCheckBox("復選框");TreeTextBox rememberUserNameBox = new TreeTextBox("記住用戶名");TreeLinkLable linkLable = new TreeLinkLable("忘記密碼");frame.addSub(userNameLable);frame.addSub(userNameBox);frame.addSub(passwordLable);frame.addSub(passwordBox);frame.addSub(checkBox);frame.addSub(rememberUserNameBox);frame.addSub(linkLable);//開始渲染window.draw();} }控制臺輸入:
開始渲染:WinForm(WINDOW窗口) 開始渲染:Picture(LOGO圖片) 開始渲染:Buttion(登錄) 開始渲染:Buttion(注冊) 開始渲染:Frame(FRAME1) 開始渲染:Lable(用戶名) 開始渲染:TextBox(文本框) 開始渲染:Lable(密碼) 開始渲染:PasswordBox(密碼框) 開始渲染:CheckBox(復選框) 開始渲染:TextBox(記住用戶名) 開始渲染:LinkLable(忘記密碼)好了,關于利用組合模式優雅的實現樹狀結構的全部內容就到這里結束了,感謝閱讀。
總結
以上是生活随笔為你收集整理的实现树状结构_组合模式 - 树状结构的优雅实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机应用基础word试题,计算机应用基
- 下一篇: python中深拷贝和浅拷贝_**Pyt