中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

代運營網(wǎng)站如何規(guī)劃企業(yè)網(wǎng)絡(luò)推廣方案

代運營網(wǎng)站,如何規(guī)劃企業(yè)網(wǎng)絡(luò)推廣方案,做視頻資源網(wǎng)站,做網(wǎng)站費用1.定義 ?組合模式又名部分整體模式,是用于把一組相似的對象當(dāng)作一個單一的對象。組合模式依據(jù)樹形結(jié)構(gòu)來組合對象,用來表示部分以及整體層次。這種類型的設(shè)計模式屬于結(jié)構(gòu)型模式,它創(chuàng)建了對象組的樹形結(jié)構(gòu)。 2.結(jié)構(gòu) 組合模式主要包含三種…

1.定義

?組合模式又名部分整體模式,是用于把一組相似的對象當(dāng)作一個單一的對象。組合模式依據(jù)樹形結(jié)構(gòu)來組合對象,用來表示部分以及整體層次。這種類型的設(shè)計模式屬于結(jié)構(gòu)型模式,它創(chuàng)建了對象組的樹形結(jié)構(gòu)。
在這里插入圖片描述

2.結(jié)構(gòu)

組合模式主要包含三種角色:

  • 抽象根節(jié)點(Component):定義系統(tǒng)各層次對象的共有方法和屬性,可以預(yù)先定義一些默認(rèn)行為和屬性。
  • 樹枝節(jié)點(Composite):定義樹枝節(jié)點的行為,存儲子節(jié)點,組合樹枝節(jié)點和葉子節(jié)點形成一個樹形結(jié)構(gòu)。
  • 葉子節(jié)點(Leaf):葉子節(jié)點對象,其下再無分支,是系統(tǒng)層次遍歷的最小單位。

3.實現(xiàn)

我們在訪問別的一些管理系統(tǒng)時,經(jīng)常可以看到類似的菜單。一個菜單可以包含菜單項(菜單項是指不再包含其他內(nèi)容的菜單條目),也可以包含帶有其他菜單項的菜單,因此使用組合模式描述菜單就很恰當(dāng),我們的需求是針對一個菜單,打印出其包含的所有菜單以及菜單項的名稱。
在這里插入圖片描述

/*** @author 曉風(fēng)殘月Lx* @date 2023/7/12 16:38*      菜單組件 (抽象根節(jié)點)*/
public abstract class MenuComponent {// 菜單組件的名稱protected String name;// 菜單組件的層級protected int level;// 添加子菜單public void add(MenuComponent menuComponent) {throw new UnsupportedOperationException();}// 移除子菜單public void remove(MenuComponent menuComponent) {throw new UnsupportedOperationException();}// 獲取指定的子菜單public MenuComponent getChild(int index) {throw new UnsupportedOperationException();}// 獲取菜單或者菜單項的名稱public String getName() {return name;}// 打印菜單名稱的方法(包含子菜單和子菜單項)public abstract void print();}import java.util.ArrayList;
import java.util.List;/*** @author 曉風(fēng)殘月Lx* @date 2023/7/12 16:43*      菜單類(樹枝節(jié)點)*/
public class Menu extends MenuComponent {// 菜單可以有多個子菜單或者子菜單項private List<MenuComponent> menuComponentList = new ArrayList<MenuComponent>();public Menu(String name, int level) {this.name = name;this.level = level;}@Overridepublic void add(MenuComponent menuComponent) {menuComponentList.add(menuComponent);}@Overridepublic void remove(MenuComponent menuComponent) {menuComponentList.remove(menuComponent);}@Overridepublic MenuComponent getChild(int index) {return menuComponentList.get(index);}@Overridepublic void print() {// 打印菜單名稱for(int i = 0; i < level; i++) {System.out.print("--");}System.out.println(name);// 打印子菜單名稱或者子菜單項名稱for (MenuComponent menuComponent : menuComponentList) {menuComponent.print();}}
}/*** @author 曉風(fēng)殘月Lx* @date 2023/7/12 16:47*      菜單項類(葉子節(jié)點)*/
public class MenuItem extends MenuComponent {public MenuItem(String name, int level) {this.name = name;this.level = level;}@Overridepublic void print() {for(int i = 0; i < level; i++) {System.out.print("--");}// 打印菜單項的名稱System.out.println(name);}
}/*** @author 曉風(fēng)殘月Lx* @date 2023/7/12 16:49*/
public class Client {public static void main(String[] args) {// 創(chuàng)建菜單樹MenuComponent menu1 = new Menu("菜單管理", 2);menu1.add(new MenuItem("頁面菜單", 3));menu1.add(new MenuItem("展開菜單", 3));menu1.add(new MenuItem("編輯菜單", 3));MenuComponent menu2 = new Menu("權(quán)限管理", 2);menu2.add(new MenuItem("頁面訪問", 3));menu2.add(new MenuItem("提交保存", 3));MenuComponent menu3 = new Menu("角色管理", 2);menu3.add(new MenuItem("新增角色", 3));// 創(chuàng)建一級菜單MenuComponent component = new Menu("系統(tǒng)管理", 1);component.add(menu1);component.add(menu2);component.add(menu3);component.print();}}

在這里插入圖片描述

4.組合模式的分類

在使用組合模式時,根據(jù)抽象構(gòu)件類的定義形式,我們可將組合模式分為透明組合模式和安全組合模式兩種形式。

  • 透明組合模式

    透明組合模式中,抽象根節(jié)點角色中聲明了所有用于管理成員對象的方法,比如在示例中 MenuComponent 聲明了 addremove 、getChild 方法,這樣做的好處是確保所有的構(gòu)件類都有相同的接口。透明組合模式也是組合模式的標(biāo)準(zhǔn)形式。

    透明組合模式的缺點是不夠安全,因為葉子對象和容器對象在本質(zhì)上是有區(qū)別的,葉子對象不可能有下一個層次的對象,即不可能包含成員對象,因此為其提供 add()、remove() 等方法是沒有意義的,這在編譯階段不會出錯,但在運行階段如果調(diào)用這些方法可能會出錯(如果沒有提供相應(yīng)的錯誤處理代碼)

  • 安全組合模式

    在安全組合模式中,在抽象構(gòu)件角色中沒有聲明任何用于管理成員對象的方法,而是在樹枝節(jié)點 Menu 類中聲明并實現(xiàn)這些方法。安全組合模式的缺點是不夠透明,因為葉子構(gòu)件和容器構(gòu)件具有不同的方法,且容器構(gòu)件中那些用于管理成員對象的方法沒有在抽象構(gòu)件類中定義,因此客戶端不能完全針對抽象編程,必須有區(qū)別地對待葉子構(gòu)件和容器構(gòu)件。

5.優(yōu)點

  • 組合模式可以清楚地定義分層次的復(fù)雜對象,表示對象的全部或部分層次,它讓客戶端忽略了層次的差異,方便對整個層次結(jié)構(gòu)進(jìn)行控制。
  • 客戶端可以一致地使用一個組合結(jié)構(gòu)或其中單個對象,不必關(guān)心處理的是單個對象還是整個組合結(jié)構(gòu),簡化了客戶端代碼。
  • 在組合模式中增加新的樹枝節(jié)點和葉子節(jié)點都很方便,無須對現(xiàn)有類庫進(jìn)行任何修改,符合“開閉原則”。
  • 組合模式為樹形結(jié)構(gòu)的面向?qū)ο髮崿F(xiàn)提供了一種靈活的解決方案,通過葉子節(jié)點和樹枝節(jié)點的遞歸組合,可以形成復(fù)雜的樹形結(jié)構(gòu),但對樹形結(jié)構(gòu)的控制卻非常簡單。

6.使用場景

組合模式正是應(yīng)樹形結(jié)構(gòu)而生,所以組合模式的使用場景就是出現(xiàn)樹形結(jié)構(gòu)的地方。比如:文件目錄顯示,多級目錄呈現(xiàn)等樹形結(jié)構(gòu)數(shù)據(jù)的操作。

http://www.risenshineclean.com/news/3292.html

相關(guān)文章:

  • 電商網(wǎng)站的支付模塊怎么做河南省鄭州市金水區(qū)
  • 典型網(wǎng)站建設(shè)百度應(yīng)用市場
  • 視頻網(wǎng)站中滑動列表怎么做的網(wǎng)站推廣的基本方法有哪些
  • 廣州企業(yè)網(wǎng)站制作哪家好搜索引擎營銷推廣
  • 如何在各大網(wǎng)站發(fā)布信息公關(guān)公司排名
  • 阿里云虛擬主機(jī)怎么建設(shè)網(wǎng)站seopeix
  • 王也壁紙關(guān)鍵詞排名優(yōu)化易下拉霸屏
  • 郴州市網(wǎng)站建設(shè)科技汕頭seo全網(wǎng)營銷
  • wordpress 音樂下載主題seo搜索引擎優(yōu)化實訓(xùn)總結(jié)
  • 學(xué)廣告設(shè)計需要什么學(xué)歷百度代做seo排名
  • 機(jī)械設(shè)計網(wǎng)站推薦重大新聞事件2023
  • 重慶企業(yè)網(wǎng)泉州seo托管
  • 從哪里可以建公司網(wǎng)站chrome官網(wǎng)
  • 公司手機(jī)網(wǎng)站建設(shè)營銷技巧在線完整免費觀看
  • 浙江網(wǎng)站建設(shè)公司電話網(wǎng)站建設(shè)圖片
  • 做外貿(mào)找客戶的網(wǎng)站寧波公司做網(wǎng)站
  • 自己建設(shè)購物網(wǎng)站安徽搜索引擎優(yōu)化
  • wordpress 建站的利弊成都網(wǎng)站建設(shè)系統(tǒng)
  • 畢業(yè)設(shè)計論文網(wǎng)站開發(fā)需要多少附近哪里有計算機(jī)培訓(xùn)班
  • 成考過來人的忠告網(wǎng)站優(yōu)化公司收費
  • dtcms怎么做自己網(wǎng)站服務(wù)外包平臺
  • 網(wǎng)站建設(shè) 靜態(tài)類北京網(wǎng)站優(yōu)化推廣方案
  • 自己創(chuàng)建網(wǎng)站403百度網(wǎng)址大全設(shè)為主頁
  • 網(wǎng)站子目錄是什么意思百度ai智能寫作工具
  • 學(xué)校門戶網(wǎng)站建設(shè)的意義優(yōu)化王
  • 什么網(wǎng)站可以做汽車國際貿(mào)易百度云網(wǎng)盤搜索引擎入口
  • 北京夢創(chuàng)義網(wǎng)站建設(shè)網(wǎng)絡(luò)培訓(xùn)課程
  • 3d效果圖設(shè)計制作優(yōu)化網(wǎng)站排名如何
  • 商業(yè)展廳手繪設(shè)計圖如何優(yōu)化培訓(xùn)體系
  • 合肥家居網(wǎng)站建設(shè)怎么樣app如何推廣以及推廣渠道