美文网首页
23种设计模式之组合模式

23种设计模式之组合模式

作者: 阿跳爱学习 | 来源:发表于2019-01-04 22:32 被阅读0次

优点:一致处理对象以及对象容器。
缺点:使得设计变得更加复杂。
组合模式一般处理树形结构,如下图。


image.png

组合模式核心:

  • Component(抽象构件):定义叶子和容器的共同点。
  • Leaf(叶子构件):无子节点都称为叶子。
  • Composite(容器构件):用于存储子节点(叶子)。

模拟一个公司工作的例子。
首先创建一个Component(抽象构件):

/**
 * 这是一个Component(抽象构件)
 */

public interface Component {
    void work();
}

然后Leaf(叶子构件):

/**
 * 这是一个Leaf(叶子构件)
 */

public class Leaf implements Component {

    private String name;

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

    @Override
    public void work() {
        Log.d("TAG", name + "在工作");
    }
}

然后是Composite(容器构件):

import android.util.Log;

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

/**
 * 这是一个Composite容器构件
 */

public class Composite implements Component {

    private String name;
    private List<Component> list = new ArrayList<>();//用于存储子节点

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

    //新增方法
    public void add(Component c) {
        list.add(c);
    }

    //删除方法
    public void remove(Component c) {
        list.remove(c);
    }

    //获取子节点方法
    public Component getChild(int index) {
        return list.get(index);
    }

    @Override
    public void work() {
        Log.d("TAG", name + "在工作");
        for (Component component : list) {
            component.work();
        }
    }
}

调用:

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentActivity;

/**
 * 这是调用者
 */

public class MainActivity extends FragmentActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //添加一家公司,在公司中添加一个部门,在部门中添加人员
        Composite company, department;
        company = new Composite("***科技有限公司");
        department = new Composite("软件部");
        Leaf person = new Leaf("张三");
        company.add(department);
        department.add(person);

        company.work();
    }
}
结果: image.png

已完成测试!有不对的地方欢迎指出,感恩。

相关文章

  • Android设计模式——组合模式(七大结构型)

    1.组合模式介绍 组合模式(Composite Pattern)也称为部分整体模式,是七大结构型设计模式之...

  • 组合模式

    设计模式之组合模式 什么是组合模式? 组合模式允许你将对象组合成树形结构来表现”部分-整体“的层次结构,使得客户以...

  • 组合模式

    设计模式系列7--组合模式 《Objective-c 编程之道 iOS 设计模式解析》 - 组合模式 常见组合模式...

  • 设计模式

    设计模式之组合模式 最新在工作之余,看了看这个设计模式,关于设计模式有很多种。最最常见的就是这个MVC模式或者...

  • Android 组合模式(View与ViewGroup)

    Android 设计模式系列文章 Android 23种设计模式 前言 组合设计模式,又被称为部分整体模式。组合模...

  • 设计模式之组合模式

    组合模式(Composite),将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组...

  • 设计模式之组合模式

    1. 定义 组合模式,又叫部分整体模式,用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用...

  • 设计模式之组合模式

    设计模式之组合模式 1.组合模式的定义 将对象组合成树形结构以表示"部分-整体"的层次结构,使得用户对单个对象和组...

  • 设计模式之组合模式

    组合模式的定义 组合模式(Composite Pattern)也叫合成模式,有时候也叫整体-部分模式,主要用来描述...

  • 设计模式之组合模式

    组合模式 组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用...

网友评论

      本文标题:23种设计模式之组合模式

      本文链接:https://www.haomeiwen.com/subject/hofkrqtx.html