美文网首页
设计模式(17)之组合模式

设计模式(17)之组合模式

作者: zhglance | 来源:发表于2019-07-05 19:52 被阅读0次

组合模式(Composite Pattern),又叫部分整体模式,将一组相似的对象当做单一的对象,将对象组合成树形结构,以表示部分和整体的层次结构,组合模式。

一、需求举例:

在一个项目团队中,有一个高级工程师,高级工程师下有中级工程师和初级工程师,中级工程师下有初级工程师。

二、类图:

三、代码实例:

1.工程师父类:Engineer

package com.lance.component;


public abstract class Engineer {

    protected String name;

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

    public abstract void add(Engineer engineer);


    void develop(String program) {
        System.out.println("Engineer default refuse " + program);
    }


}

2.初级工程师类:JuniorEngineer

package com.lance.component;

public class JuniorEngineer extends Engineer {

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

    @Override
    public void add(Engineer engineer) {

    }


    @Override
    public void develop(String program) {
        System.out.println(program +  " developed by " + name);

    }

}

3.中级工程师:

package com.lance.component;

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

public class IntermediateEngineer extends Engineer {

    private List<Engineer> subEngineers = new ArrayList<>();

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

    @Override
    public void add(Engineer engineer) {
        subEngineers.add(engineer);
    }


    @Override
    public void develop(String program) {
        System.out.println(program + " developed by " + name);

        for (Engineer engineer : subEngineers) {
            if(program.startsWith("∟")) {
                engineer.develop("  " + program);
            } else {
                engineer.develop("∟" + program);
            }
        }
    }
}

4.高级工程师:SeniorEngineer

package com.lance.component;

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

public class SeniorEngineer extends Engineer {

    private List<Engineer> subEngineers = new ArrayList<>();

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

    @Override
    public void add(Engineer engineer) {
        subEngineers.add(engineer);
    }


    @Override
    public void develop(String program) {
        System.out.println(program +  " developed by " + name);

        for (Engineer engineer : subEngineers) {
            if(program.startsWith("∟")) {
                engineer.develop("  " + program);
            } else {
                engineer.develop("∟" + program);
            }
        }

    }
}

5.主类:

package com.lance.component;

public class ComponentPattern {

    public static void main(String[] args) {


        System.out.println("==========start==========");

        SeniorEngineer leader = new SeniorEngineer("team leader");
        leader.add(new IntermediateEngineer("中级工程师-A"));
        Engineer engineer = new IntermediateEngineer("中级工程师-B");
        engineer.add(new JuniorEngineer("初级工程师-D"));
        leader.add(engineer);

        Engineer intermediateEngineer =new IntermediateEngineer("中级工程师-C");
        intermediateEngineer.add(new JuniorEngineer("初级工程师-A"));
        intermediateEngineer.add(new JuniorEngineer("初级工程师-B"));

        leader.add(intermediateEngineer);
        leader.add(new JuniorEngineer("初级工程师-C"));


        leader.develop("[program]");

        System.out.println("==========end==========");

    }
}

输出结果:

==========start==========
[program] developed by team leader
∟[program] developed by 中级工程师-A
∟[program] developed by 中级工程师-B
  ∟[program] developed by 初级工程师-D
∟[program] developed by 中级工程师-C
  ∟[program] developed by 初级工程师-A
  ∟[program] developed by 初级工程师-B
∟[program] developed by 初级工程师-C
==========end==========

相关文章

  • 设计模式(17)之组合模式

    组合模式(Composite Pattern),又叫部分整体模式,将一组相似的对象当做单一的对象,将对象组合成树形...

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

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

  • 组合模式

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

  • 组合模式

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

  • 设计模式

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

  • Android 组合模式(View与ViewGroup)

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

  • 设计模式之组合模式

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

  • 设计模式之组合模式

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

  • 设计模式之组合模式

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

  • 设计模式之组合模式

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

网友评论

      本文标题:设计模式(17)之组合模式

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