日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实现树状结构_组合模式 - 树状结构的优雅实现

發(fā)布時間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实现树状结构_组合模式 - 树状结构的优雅实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在編程實踐中,經(jīng)常會遇到樹狀結(jié)構(gòu)的場景,比如我們的瀏覽器窗口,比如文件系統(tǒng)。

那么,在處理樹狀結(jié)構(gòu)的時候有什么較好的方式呢?

現(xiàn)在,我們就來學習一種利用組合模式的方法。

如上圖所示,我們通過程序輸出的方式模擬窗口渲染的過程。

下面直接上代碼,首先定義一個接口,所有的組件都需要實現(xiàn)這個接口。

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(忘記密碼)

好了,關(guān)于利用組合模式優(yōu)雅的實現(xiàn)樹狀結(jié)構(gòu)的全部內(nèi)容就到這里結(jié)束了,感謝閱讀。

總結(jié)

以上是生活随笔為你收集整理的实现树状结构_组合模式 - 树状结构的优雅实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。