当前位置: 首页 > news >正文

提供赣州网站建设微信小程序开发多少钱

提供赣州网站建设,微信小程序开发多少钱,网站建设中 提示,网站建优化文章目录 前言一、组合模式基本介绍二、UML类图三、完整代码抽象类,所有类都继承此类学校类以父类型引用组合一个学院类学院类以父类型引用组合一个专业类专业类,叶子节点,不能再组合其他类测试类 四、组合模式在JDK集合的源码分析五、组合模…

文章目录

  • 前言
  • 一、组合模式基本介绍
  • 二、UML类图
  • 三、完整代码
    • 抽象类,所有类都继承此类
    • 学校类以父类型引用组合一个学院类
    • 学院类以父类型引用组合一个专业类
    • 专业类,叶子节点,不能再组合其他类
    • 测试类
  • 四、组合模式在JDK集合的源码分析
  • 五、组合模式的注意事项和细节


前言

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


一、组合模式基本介绍

在这里插入图片描述
在这里插入图片描述

二、UML类图

在这里插入图片描述

三、完整代码

抽象类,所有类都继承此类

package tanchishell.SJMS.composite;//抽象类,也可以是接口或者一个实体类
public abstract class OrganizationComponent {private String name; // 名字private String des; // 说明//不能做成抽象方法,因为有的子类不需要实现 add和remove 方法protected void add(OrganizationComponent organizationComponent) {//默认实现throw new UnsupportedOperationException();}protected void remove(OrganizationComponent organizationComponent) {//默认实现throw new UnsupportedOperationException();}//方法 print, 做成抽象的, 子类都需要实现protected abstract void print();//构造器public OrganizationComponent(String name, String des) {super();this.name = name;this.des = des;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDes() {return des;}public void setDes(String des) {this.des = des;}}

学校类以父类型引用组合一个学院类

package tanchishell.SJMS.composite;import java.util.ArrayList;
import java.util.List;// 学校类 University 就是 Composite , 可以管理 College
public class University extends OrganizationComponent {List<OrganizationComponent> organizationComponents = new ArrayList<OrganizationComponent>();// 构造器public University(String name, String des) {super(name, des);//}// 重写 add@Overrideprotected void add(OrganizationComponent organizationComponent) {organizationComponents.add(organizationComponent);}// 重写 remove@Overrideprotected void remove(OrganizationComponent organizationComponent) {organizationComponents.remove(organizationComponent);}// print 方法,就是输出 University 包含的学院@Overrideprotected void print() {System.out.println("--------------" + getName() + "--------------");//遍历 organizationComponentsfor (OrganizationComponent organizationComponent : organizationComponents) {organizationComponent.print();}}@Overridepublic String getName() {return super.getName();}@Overridepublic String getDes() {return super.getDes();}}

学院类以父类型引用组合一个专业类

package tanchishell.SJMS.composite;import java.util.ArrayList;
import java.util.List;//学院类
public class College extends OrganizationComponent{List<OrganizationComponent> organizationComponents = new ArrayList<OrganizationComponent>();// 构造器public College(String name, String des) {super(name, des);//}// 重写 add@Overrideprotected void add(OrganizationComponent organizationComponent) {organizationComponents.add(organizationComponent);}// 重写 remove@Overrideprotected void remove(OrganizationComponent organizationComponent) {organizationComponents.remove(organizationComponent);}// print 方法,就是输出 College 包含的专业@Overrideprotected void print() {System.out.println("--------------" + getName() + "--------------");//遍历 organizationComponentsfor (OrganizationComponent organizationComponent : organizationComponents) {organizationComponent.print();}}@Overridepublic String getName() {return super.getName();}@Overridepublic String getDes() {return super.getDes();}
}

专业类,叶子节点,不能再组合其他类

package tanchishell.SJMS.composite;public class Department extends OrganizationComponent {//没有集合public Department(String name, String des) {super(name, des);}
//add , remove 就不用写了,因为他是叶子节点@Overridepublic String getName() {return super.getName();}@Overridepublic String getDes() {return super.getDes();}@Overrideprotected void print() {//输出自己的name 就可以了System.out.println(getName());}
}

测试类

package tanchishell.SJMS.composite;public class Client {public static void main(String[] args) {//从大到小创建对象 学校OrganizationComponent university = new University("清华大学", " 中国顶级大学 ");//创建 学院OrganizationComponent computerCollege = new College("计算机学院", " 计算机学院 ");OrganizationComponent infoEngineercollege = new College("信息工程学院", " 信息工程学院 ");//创建各个学院下面的系(专业)computerCollege.add(new Department("软件工程", " 软件工程不错 "));computerCollege.add(new Department("网络工程", " 网络工程不错 "));computerCollege.add(new Department("计算机科学与技术", " 计算机科学与技术是老牌的专业 "));System.out.println("--------------------------------------------------------------");infoEngineercollege.add(new Department("通信工程", " 通信工程不好学 "));infoEngineercollege.add(new Department("信息工程", " 信息工程好学 "));//将学院加入到 学校university.add(computerCollege);university.add(infoEngineercollege);university.print();//输出  信息工程学院//infoEngineercollege.print();//输出   计算机学院
//        computerCollege.print();}
}输出
--------------------------------------------------------------
--------------清华大学--------------
--------------计算机学院--------------
软件工程
网络工程
计算机科学与技术
--------------信息工程学院--------------
通信工程
信息工程

四、组合模式在JDK集合的源码分析

在这里插入图片描述
在这里插入图片描述

HashMap的组合模式对比我们上面的组合又多做了一层接口 Map 所有的Map子类都实现了Map接口

然后就是一个抽象类 AbstractMap,所有的子类都去继承了这个 抽象类

在这里插入图片描述

和我们上面一样,抽象类这里也抛出了异常,防止叶子节点自动继承该方法,叶子节点不能再进行 put 动作。

在这里插入图片描述

来到 HashMap 继承了 抽象map 和map 接口,而且 put 方法有方法体,有具体实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、组合模式的注意事项和细节

在这里插入图片描述

http://www.shuangfujiaoyu.com/news/45623.html

相关文章:

  • 农村建设集团有限公司网站首页深圳网站推广
  • 网站定向推送怎么做自媒体135免费版下载
  • 深圳市工程建设网站网络推广外包注意哪些
  • 网站中添加百度地图西安seo专员
  • 网站服务器的采购方案天津关键词优化专家
  • 长春启做网站多少谷歌外贸平台叫什么
  • 网站建设优秀网网络营销策略有哪五种
  • 精准营销管理百度seo详解
  • 正安县住房和城乡建设局网站百度提交工具
  • 公司网站建设价格贵吗互联网公司排名
  • 做网站行业统称叫什么行业前端培训
  • 品质好货seo推广的全称是
  • 怎么做才能使网站排名靠前百度营销客户端
  • 做网站网页排版错误网络软文推广网站
  • 数据库支持的网站怎么做朝阳网站建设
  • 软件开发专业就业seo资讯推推蛙
  • 邯郸网站建设制作开网店3个月来亏了10万
  • 织梦网站怎么做二级域名google官网下载
  • 电子商务网站开发问题研究成都网站推广哪家专业
  • 佛山知名营销网站开发网络营销考试答案
  • 网站免费源码长春seo结算
  • 大良营销网站建设教程百度快照推广效果怎样
  • 天水做网站的公司下载百度语音导航地图
  • 学做日本料理菜的视频网站seo站长工具平台
  • 中小企业网络管理员实战完全手册站优化
  • 网站模板大全下载湖南关键词排名推广
  • 成都公司网页制作电话网站内容优化方法
  • 南京模板建网站哪家好东莞做好网络推广
  • 做网站教学视频搜索引擎营销的方法不包括
  • 厦门网站建设方案服务百度权重4网站值多少钱