组合设计模式代码

本文介绍了一个简单的员工组织结构实现方式,通过定义抽象类Node作为所有员工的基础类,并派生出Branch和Leaf两个具体类来表示管理层和普通员工。通过递归的方式实现了员工之间的隶属关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.zuhe;

public abstract class Node {
	
	String name;
	String position;
	
	public Node(String name,String position) {
		this.name=name;
		this.position=position;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPosition() {
		return position;
	}
	public void setPosition(String position) {
		this.position = position;
	}
	
	public  void show(){
		System.out.println(name +" "+position);
	}
	
	public static void main(String[] args) {
		
		Branch ceo=new Branch("刘总","ceo");
		
		Branch bm1=new Branch("王副总","开发部门经理");
		Branch bm2=new Branch("赵副总","销售部门经理");
		
		Branch ks1=new Branch("王经理","开发科室经理");
		Branch ks2=new Branch("赵经理","销售科室经理");
		
		Leaf leaf1=new Leaf("张三","开发员工");
		Leaf leaf2=new Leaf("李四","销售员工");
		
		ks1.addunder(leaf1);
		ks2.addunder(leaf2);
		bm1.addunder(ks1);
		bm2.addunder(ks2);
		ceo.addunder(bm1);
		ceo.addunder(bm2);
		
	//	ceo.getUnders();
		bm1.getUnders();
	}
	
	

}

package com.zuhe;

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

public class Branch extends Node {
	
	public Branch(String name, String position) {
		super(name, position);
	}

	List<Node>  unders=new ArrayList<Node>();

	public void getUnders() {
		for (Node under : unders) {
			under.show();
		}
	}

	public void addunder(Node under) {
		this.unders.add(under);
	}
	
	public void removeunder(Node under) {
		this.unders.remove(under);
	}
	
}

package com.zuhe;

public class Leaf extends Node {

	public Leaf(String name, String position) {
		super(name, position);
	}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值