怎么在Java中利用组合模式实现公司组织结构功能

  介绍

怎么在Java中利用组合模式实现公司组织结构功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

<强>一、模式定义

组合模式:将对象组合成树形结构以表示”部分一整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。

<强>二、组合模式举例

<强> 1模式分析

我们借用公司组织结构图来说明这一模式。

经过分析后,我们得出该模式静态类图如下:

怎么在Java中利用组合模式实现公司组织结构功能

<强> 2代码示例

2.1建立员工抽象类

package  com.demo.composite;/* *   ,*职工类接口   ,*   ,* @author   ,*   ,*/public  abstract  class  Staff  {//才能,员工号   protected 才能;String 没有;//才能,职工名字   protected 才能;String 名称;//才能,职位   protected 才能;String 位置;//才能,薪资   protected 才能float 工资;//才能,私有属性,长度字符串   private 才能;int 长度;//,才能构造方法   public 才能;员工(String 不,,String 名字,,String 位置,,float 工资),{   ,,,this.no =,没有;   ,,,this.name =,名称;   ,,,this.position =,位置;   ,,,this.salary =,工资;   ,,,//,计算总字节长度   ,,,this.length  +=, (no ==, null  | |,““.equals (no.trim ())), ? 0   ,,,,,,,,,no.getBytes . length ();   ,,,this.length  +=, (name ==, null  | |,““.equals (name.trim())), ?, 0,:名字   ,,,,,,,.getBytes . length ();   ,,,this.length  +=, (position ==, null  | |,““.equals (position.trim ())), ? 0   ,,,,,,,,,position.getBytes . length ();   ,,,this.length  +=, String.valueOf(工资).getBytes . length ();   ,,}//,才能获得用户基本信息   public 才能;void  printUserBaseInfo (), {   ,,,System.out.println (“|”, +, this.no  +,,,,, +, this.name  +,“,“   ,,,,,,,+,this.position  +,,,,, +, this.salary);   ,,}//,才能添加员工信息   public 才能;abstract  void 添加(Staff 员工);//,才能删除员工   public 才能;abstract  Staff 删除(String 没有);//,才能打印员工信息   public 才能abstract  void  printEmployeesInfo (int 层);//,才能打印若干字符   protected 才能;void  printChar (int 层),{   ,,,for  (int  j =, 0;, j  & lt;, layer  *, 2。, j + +), {   ,,,,,System.out.print(“产生绯闻);   ,,,}   ,,}//才能,私有方法打印一行   protected 才能;void  printLine (), {   ,,,System.out.print (“+”);   ,,,for  (int 小姐:=,0;,小姐:& lt;, this.length  +, 4,,我+ +),{   ,,,,,System.out.print(“产生绯闻);   ,,,}   ,,,System.out.println(“产生绯闻);   ,,}   public 才能;String  getNo (), {   ,,,return 没有;   ,,}   public 才能;void  setNo (String 没有),{   ,,,this.no =,没有;   ,,}   public 才能;String  getName (), {   ,,,return 名称;   ,,}   public 才能;void  setName (String 名称),{   ,,,this.name =,名称;   ,,}   public 才能;String  getPosition (), {   ,,,return 位置;   ,,}   public 才能;void  setPosition (String 位置),{   ,,,this.position =,位置;   ,,}   public 才能;float  getSalary (), {   ,,,return 工资;   ,,}   public 才能;void  setSalary (float 工资),{   ,,,this.salary =,工资;   ,,}   }

2.2创建管理者

package  com.demo.composite.sub;   import  java.util.ArrayList;   import  com.demo.composite.Staff;/* *   ,*管理人员(手下有其他员工的人)   ,*   ,* @author   ,*   ,*/public  class  Manager  extends  Staff  {//,才能存储手下员工信息   private 才能final  ArrayList< Staff>, arrayList =, new  ArrayList ();   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在Java中利用组合模式实现公司组织结构功能