(十二)组合模式

当我们水果店做的非常大的时候,客户的订单来自不同的地方


(十二)组合模式_第1张图片
客户端订单目的地

每个省市行政区,都有很多不同的级别,这样的话在项目中类文件会非常多


(十二)组合模式_第2张图片
image.png

这时候需要找出他们的共性提取出来,减少类的种类

组合模式

(十二)组合模式_第3张图片
组合模式

虽然行政区很多,但是我们可以把他们看成一个节点(Node),把这个节点抽象出来,所有的行政区都是一个节点,该行政区的下属行政机构就是子节点,这其实就是树形结构,这样抽象出来后,类型大大减少,只有一个Node

public abstract class Node {
    private String name;

    public Node(String name){
        this.name = name;
    }

    public abstract List getChildren();

    public String getName() {
        return name;
    }
}
public class LeafNode extends Node{
    private List children = new ArrayList<>();

    public LeafNode(String name) {
        super(name);
    }

    @Override
    public List getChildren() {
        return children;
    }

    public void addChild(Node node){
        children.add(node);
    }

    public void delChild(int i){
        children.remove(i);
    }


}

总结

所谓的组合模式,就是减少数据类型,尽可能的抽象出来,减少项目结构上的复杂度

你可能感兴趣的:((十二)组合模式)