国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

詳細總結Java組合模式

發(fā)布時(shí)間:2021-07-05 18:40 來(lái)源:腳本之家 閱讀:0 作者:婭婭梨 欄目: 開(kāi)發(fā)技術(shù)

目錄

一、前言

組合模式,又叫部分整體模式,是用于把一組相似的對象,當做單一的對象。組合模式依據樹(shù)形結構來(lái)組合對象,用來(lái)表示部分以及整體層次。這種類(lèi)型的設計模式屬于結構型模式,它提供了修改相同對象組的方式。

二、介紹

意圖:

將對象組合成樹(shù)形結構以表示”部分-整體“的層次結構。組合模式使得用戶(hù)對單個(gè)對象和組合對象的使用具有一致性。

主要解決:

它在我么的屬性結構的問(wèn)題中,模糊了簡(jiǎn)單元素和復雜元素的概念,客戶(hù)程序可以像處理簡(jiǎn)單元素一樣處理復雜元素,從而使得客戶(hù)程序的復雜元素的內部結構解耦。

應用實(shí)例:

  • s算術(shù)表達式包括操作數,操作符和另一個(gè)操作數,其中,另一個(gè)操作符也可以是操作數,操作符和另一個(gè)操作數。
  • 在java AWT 和 SWING中對于Button 和 CheckBox是樹(shù)葉, Container是樹(shù)枝。Android View源碼可以參考下。

何時(shí)使用:

  • 您想表示對象的部分-整體層次結構的時(shí)候(樹(shù)形結構)
  • 您希望用戶(hù)忽略組合對象與單個(gè)對象的不同,用戶(hù)將統一的使用組合結構中的所有對象。

優(yōu)點(diǎn)

1 高層模塊調用簡(jiǎn)單。

2 節點(diǎn)自由增加

缺點(diǎn)
在使用組合模式的時(shí)候,其葉子和樹(shù)枝的聲明都是直線(xiàn)類(lèi),而不能是接口,違反了依賴(lài)倒置原則。(不明白依賴(lài)倒置原則,去請參考另外一篇文章,講不透算我輸!)

使用場(chǎng)景 部分,整體場(chǎng)景,如樹(shù)形菜單,文件,文件夾的管理

注意事項: 定義時(shí)為具體類(lèi)

三、實(shí)現

class Employee {
    private String name;
    private String dept;
    private int salary;
    private List<Employee> subordinates;

    public Employee(String name, String dept, int salary) {
        this.name = name;
        this.dept = dept;
        this.salary = salary;
        this.subordinates = new ArrayList<>();
    }

    public void add(Employee employee) {
        subordinates.add(employee);
    }

    public void remove(Employee employee) {
        subordinates.remove(employee);
    }

    public List<Employee> getSubordinates() {
        return subordinates;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "name='" + name + '\'' +
                ", dept='" + dept + '\'' +
                ", salary=" + salary +
                ", subordinates=" + subordinates +
                '}';
    }
}

class CompositePatternDemo {
    public static void main(String[] args) {
        Employee CEO = new Employee("John", "CEO", 30000);
        Employee headSales = new Employee("Robert", "Head Sales", 20000);
        Employee headMarketing = new Employee("Michel", "Head Marketing", 20000);
        Employee clerk1 = new Employee("Laura", "Marketing", 10000);
        Employee clerk2 = new Employee("Bob", "Marketing", 10000);
        Employee salesExecutive1 = new Employee("Richard", "Sales", 10000);
        Employee salesExecutive2 = new Employee("Rob", "Sales", 10000);

        CEO.add(headSales);
        CEO.add(headMarketing);

        headSales.add(salesExecutive1);
        headSales.add(salesExecutive2);

        headMarketing.add(clerk1);
        headMarketing.add(clerk2);

        System.out.println(CEO);


    }
}

到此這篇關(guān)于詳細總結Java組合模式的文章就介紹到這了,更多相關(guān)Java組合模式內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

成人国内精品视频在线观看| 亚洲香蕉视频综合在线| 久久久99精品成人片| 久久久亚洲色| 黄A大片AV永久免费| 色综合久久一区二区三区|