Radio

一个小小程序员

0%

组合模式

组合模式

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。

这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。

示例演示:
  1. 创建一个people实体类,让这个实体类里面依然包含people的对象集合

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    package test.composite;

    import lombok.Data;

    import java.util.ArrayList;
    import java.util.List;

    @Data
    public class People {
    private Integer id;
    private String name;

    private List<People> peoples;

    public People(Integer id, String name) {
    this.id = id;
    this.name = name;
    peoples = new ArrayList<>();
    }

    public void add(People people) {
    peoples.add(people);
    }
    }
  2. 完成上述步骤,我们就可以开始演示了

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    package test.composite;

    public class CompositeDemo {
    public static void main(String[] args) {
    People people = new People(1,"1");
    People people2 = new People(2,"2");
    People people3 = new People(3,"3");
    People people4 = new People(4,"4");

    people.add(people2);
    people.add(people3);
    people.add(people4);

    System.out.println(people.toString());

    }
    }

    运行结果:

    1
    People(id=1, name=1, peoples=[People(id=2, name=2, peoples=[]), People(id=3, name=3, peoples=[]), People(id=4, name=4, peoples=[])])
    说明:

    1、组合模式,就是在一个对象中包含其他对象,这些被包含的对象可能是终点对象(不再包含别的对象),也有可能是非终点对象(其内部还包含其他对象,或叫组对象),我们将对象称为节点,即一个根节点包含许多子节点,这些子节点有的不再包含子节点,而有的仍然包含子节点,以此类推。

    2、所谓组合模式,其实说的是对象包含对象的问题,通过组合的方式(在对象内部引用对象)来进行布局,我认为这种组合是区别于继承的,而另一层含义是指树形结构子节点的抽象(将叶子节点与数枝节点抽象为子节点),区别于普通的分别定义叶子节点与数枝节点的方式。

欢迎关注我的其它发布渠道