温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

在JAVA项目中组合模式的实现原理是什么

发布时间:2020-11-30 16:59:16 来源:亿速云 阅读:228 作者:Leah 栏目:编程语言

今天就跟大家聊聊有关在JAVA项目中组合模式的实现原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

组合模式:将不同但是相关的对象组合成树形结构以实现“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。

* 模式角色组成:

1.Component对象: 是组合中的对象接口,是所有类共有的接口。是用于统一定义整体中的部分。

2.Leaf对象: 整体中的部分,没有下一级。

3.Composite对象: 用来存储子部件,在Component接口中实现与部分有关操作。

以公司构成为例,比如公司有总公司,总公司下有分公司,分公司下有办事处等。构成一个树形结构。

/**  * 抽象类:用来管理子类  * @description:  * @date 2016-1-22 下午1:16:25  */ public abstract class Firm {   private String firmName;// 公司名称   public Firm(String firmName) {     this.firmName = firmName;   }   public String getFirmName() {     return firmName;   }   public void setFirmName(String name) {     this.firmName = name;   }   protected abstract void append(Firm firm);// 添加公司如:新增分公司   protected abstract void romove(Firm firm);// 删除公司:如因故关闭分公司   protected abstract void show(int level);//显示公司所在的层级:总公司,分公司,办事处等 }
/**  * 分公司对象  * @description:  * @date 2016-1-22 下午1:25:43  */ public class BranchFirm extends Firm {   private List<Firm> cList;   public BranchFirm(String name) {     super(name);     cList = new ArrayList<Firm>();   }   @Override   protected void append(Firm firm) {     cList.add(firm);   }   @Override   protected void show(int depth) {     StringBuilder sb = new StringBuilder("");     for (int i = 0; i < depth; i++) {       sb.append("*");     }     System.out.println(new String(sb) + this.getFirmName());     for (Firm c : cList) {       c.show(depth + 2);     }   }   @Override   protected void romove(Firm firm) {     // TODO Auto-generated method stub     cList.remove(firm);   } }
/**  * Leaf结点类:公司市场部  * @description:  * @date 2016-1-22 下午1:46:02  */ public class MarketDepartment extends Firm {   public MarketDepartment(String name) {     super(name);   }   @Override   protected void append(Firm company) {   }   @Override   protected void show(int depth) {     // TODO Auto-generated method stub     StringBuilder sb = new StringBuilder("");     for (int i = 0; i < depth; i++) {       sb.append("*");     }     System.out.println(new String(sb) + this.getFirmName());   }   @Override   protected void romove(Firm company) {   } }
/**  * Leaf结点类:公司技术部  * @description:  * @date 2016-1-22 下午1:21:41  */ public class MinTechDepartment extends Firm {   public MinTechDepartment(String name) {     super(name);   }   @Override   protected void append(Firm firm) {   }   @Override   protected void show(int depth) {     StringBuilder sb = new StringBuilder("");     for (int i = 0; i < depth; i++) {       sb.append("*");     }     System.out.println(new String(sb) + this.getFirmName());   }   @Override   protected void romove(Firm company) {   } }
public class Test {   public static void main(String[] args) {     // TODO Auto-generated method stub     Firm head = new BranchFirm("深圳XX集团有限公司");// 公司总部     head.append(new MarketDepartment("深圳XX集团有限公司--市场部"));     head.append(new MinTechDepartment("深圳XX集团有限公司--技术部"));     Firm jsFirm = new BranchFirm("深圳XX集团有限公司-江苏分公司");     jsFirm.append(new MarketDepartment("深圳XX集团有限公司-江苏分公司市场部"));     jsFirm.append(new MinTechDepartment("深圳XX集团有限公司-江苏分公司技术部"));     Firm szFirm = new BranchFirm("深圳XX集团有限公司-江苏分公司-苏州办事处");     szFirm.append(new MinTechDepartment("深圳XX集团有限公司-江苏分公司-苏州办事处技术部"));     szFirm.append(new MarketDepartment("深圳XX集团有限公司-江苏分公司-苏州办事处市场部"));     jsFirm.append(szFirm);     // 如果还需要新增分公司或办事处等,就继续按照上述操作处理     head.append(jsFirm);     head.show(0);   } }

看完上述内容,你们对在JAVA项目中组合模式的实现原理是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI