多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > 設計模式8――組合模式

設計模式8――組合模式

來源:程序員人生   發布時間:2015-04-24 08:09:45 閱讀次數:4039次

1.生活實例

組合模式首先想到的就是樹形結構,比如我們經常使用的文件結構,請看Windows的文件結構:

不管是文件或是文件夾,經常使用操作都是1致的,比如:復制、粘貼、剪切、刪除、所占空間大小。我們并沒有刻意的去分他是文件夾還是文件。

我們可以把文件夾看成是組合對象,把每個文件看成是單個對象。組合模式模糊了這兩個概念,他使得客戶端能夠用簡單1致的操作來操作兩個不同的東西。

2.定義解析

           將對象組合成樹形結構以表示“部份-整體”的層次結構。組合模式使得用戶對單個對象的使用具有1致性。



Client:客戶端。

Component:定義組合對象的接口。

Leaf:組合對象中的葉子,實現Component接口。

Composite:組合對象中的節點,組合所有葉子,實現Component接口,并且可以刪除和增加葉子。

3.代碼分析

Component

public interface Component { public void show(); public void isChild(int pFatherLevel); }

Composite

public class Composite implements Component { private String mName; private int mLevel; private ArrayList<Component> mList = new ArrayList<Component>(); public Composite(String pName) { mName = pName; mLevel = 0; } public void add(Component pComponent) { pComponent.isChild(mLevel); mList.add(pComponent); } public void remove(Component pComponent) { mList.remove(pComponent); } @Override public void show() { showLevel(); for (Component component : mList) { component.show(); } } @Override public void isChild(int pFatherLevel) { mLevel = pFatherLevel + 1; } private void showLevel() { for (int i = 0; i < mLevel; i++) { System.out.print("-"); } System.out.println(mName); } }

Leaf

public class Leaf implements Component { private String mName; private int mLevel; public Leaf(String pName) { mName = pName; mLevel = 0; } @Override public void show() { showLevel(); } @Override public void isChild(int pFatherLevel) { mLevel = pFatherLevel + 1; } private void showLevel() { for (int i = 0; i < mLevel; i++) { System.out.print("-"); } System.out.println(mName); } }

Client

public class CompositeTest { // 類似2叉樹這樣的結構 public static void main(String[] args) { Composite composite1 = new Composite("節點1"); Composite composite2 = new Composite("節點2"); Leaf leaf1 = new Leaf("葉子1"); Leaf leaf2 = new Leaf("葉子2"); Leaf leaf3 = new Leaf("葉子3"); Leaf leaf4 = new Leaf("葉子4"); Leaf leaf5 = new Leaf("葉子5"); composite1.add(leaf1); composite1.add(leaf2); composite1.add(composite2); composite2.add(leaf3); composite2.add(leaf4); composite2.add(leaf5); composite1.show(); } }

打印結果

節點1

-葉子1

-葉子2

-節點2

--葉子3

--葉子4

--葉子5

4.總結

           很久沒寫博客,撿起來。學如逆水行舟,不進則退。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲国产一区二区三区在线观看 | 久久天天躁狠狠躁夜夜爽蜜月 | 日韩欧美在线视频 | 国产三级手机在线 | 一区| 亚洲视频在线免费观看 | 国产福利一区二区在线观看 | 亚洲一区二区三 | 亚洲一区二区三区四区 | 不卡的毛片 | 国产精品国产三级在线高清观看 | 日韩欧美综合在线二区三区 | 手机看片日韩在线 | www.亚洲视频 | 一区二区三区中文字幕 | 精品欧美一区二区三区在线 | 国内视频自拍 | 欧美三级久久 | 国产欧美久久久另类精品 | 亚洲精品国产一区二区图片欧美 | 国内免费高清视频在线观看 | 午夜免费福利影院 | 亚洲综合日韩欧美一区二区三 | 国产一区二区播放 | 日本不卡不码高清免费观看 | 成人午夜大片免费视频77777 | 亚洲春色综合另类小说 | 大美香蕉伊在看欧美 | 午夜视频免费在线播放 | 日韩欧美二区 | 日韩欧美综合在线二区三区 | 日本一区二区三区欧美在线观看 | 亚洲欧洲精品视频在线观看 | 国产片自拍 | 一级特黄aa大片免费播放视频 | 17videosex性欧美| 亚洲欧美精品一区天堂久久 | 亚洲三级视频在线 | 亚洲欧美日韩在线2020 | 免费日韩精品 | 国产jizz中国jizz免费看 |