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

宁波网站排名优化网络工程师证书有哪些

宁波网站排名优化,网络工程师证书有哪些,自学程序员怎么入门,WordPress美化前端1.定义 ​组合模式又名部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。 2.结构 组合模式主要包含三种…

1.定义

​组合模式又名部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。
在这里插入图片描述

2.结构

组合模式主要包含三种角色:

  • 抽象根节点(Component):定义系统各层次对象的共有方法和属性,可以预先定义一些默认行为和属性。
  • 树枝节点(Composite):定义树枝节点的行为,存储子节点,组合树枝节点和叶子节点形成一个树形结构。
  • 叶子节点(Leaf):叶子节点对象,其下再无分支,是系统层次遍历的最小单位。

3.实现

我们在访问别的一些管理系统时,经常可以看到类似的菜单。一个菜单可以包含菜单项(菜单项是指不再包含其他内容的菜单条目),也可以包含带有其他菜单项的菜单,因此使用组合模式描述菜单就很恰当,我们的需求是针对一个菜单,打印出其包含的所有菜单以及菜单项的名称。
在这里插入图片描述

/*** @author 晓风残月Lx* @date 2023/7/12 16:38*      菜单组件 (抽象根节点)*/
public abstract class MenuComponent {// 菜单组件的名称protected String name;// 菜单组件的层级protected int level;// 添加子菜单public void add(MenuComponent menuComponent) {throw new UnsupportedOperationException();}// 移除子菜单public void remove(MenuComponent menuComponent) {throw new UnsupportedOperationException();}// 获取指定的子菜单public MenuComponent getChild(int index) {throw new UnsupportedOperationException();}// 获取菜单或者菜单项的名称public String getName() {return name;}// 打印菜单名称的方法(包含子菜单和子菜单项)public abstract void print();}import java.util.ArrayList;
import java.util.List;/*** @author 晓风残月Lx* @date 2023/7/12 16:43*      菜单类(树枝节点)*/
public class Menu extends MenuComponent {// 菜单可以有多个子菜单或者子菜单项private List<MenuComponent> menuComponentList = new ArrayList<MenuComponent>();public Menu(String name, int level) {this.name = name;this.level = level;}@Overridepublic void add(MenuComponent menuComponent) {menuComponentList.add(menuComponent);}@Overridepublic void remove(MenuComponent menuComponent) {menuComponentList.remove(menuComponent);}@Overridepublic MenuComponent getChild(int index) {return menuComponentList.get(index);}@Overridepublic void print() {// 打印菜单名称for(int i = 0; i < level; i++) {System.out.print("--");}System.out.println(name);// 打印子菜单名称或者子菜单项名称for (MenuComponent menuComponent : menuComponentList) {menuComponent.print();}}
}/*** @author 晓风残月Lx* @date 2023/7/12 16:47*      菜单项类(叶子节点)*/
public class MenuItem extends MenuComponent {public MenuItem(String name, int level) {this.name = name;this.level = level;}@Overridepublic void print() {for(int i = 0; i < level; i++) {System.out.print("--");}// 打印菜单项的名称System.out.println(name);}
}/*** @author 晓风残月Lx* @date 2023/7/12 16:49*/
public class Client {public static void main(String[] args) {// 创建菜单树MenuComponent menu1 = new Menu("菜单管理", 2);menu1.add(new MenuItem("页面菜单", 3));menu1.add(new MenuItem("展开菜单", 3));menu1.add(new MenuItem("编辑菜单", 3));MenuComponent menu2 = new Menu("权限管理", 2);menu2.add(new MenuItem("页面访问", 3));menu2.add(new MenuItem("提交保存", 3));MenuComponent menu3 = new Menu("角色管理", 2);menu3.add(new MenuItem("新增角色", 3));// 创建一级菜单MenuComponent component = new Menu("系统管理", 1);component.add(menu1);component.add(menu2);component.add(menu3);component.print();}}

在这里插入图片描述

4.组合模式的分类

在使用组合模式时,根据抽象构件类的定义形式,我们可将组合模式分为透明组合模式和安全组合模式两种形式。

  • 透明组合模式

    透明组合模式中,抽象根节点角色中声明了所有用于管理成员对象的方法,比如在示例中 MenuComponent 声明了 addremovegetChild 方法,这样做的好处是确保所有的构件类都有相同的接口。透明组合模式也是组合模式的标准形式。

    透明组合模式的缺点是不够安全,因为叶子对象和容器对象在本质上是有区别的,叶子对象不可能有下一个层次的对象,即不可能包含成员对象,因此为其提供 add()、remove() 等方法是没有意义的,这在编译阶段不会出错,但在运行阶段如果调用这些方法可能会出错(如果没有提供相应的错误处理代码)

  • 安全组合模式

    在安全组合模式中,在抽象构件角色中没有声明任何用于管理成员对象的方法,而是在树枝节点 Menu 类中声明并实现这些方法。安全组合模式的缺点是不够透明,因为叶子构件和容器构件具有不同的方法,且容器构件中那些用于管理成员对象的方法没有在抽象构件类中定义,因此客户端不能完全针对抽象编程,必须有区别地对待叶子构件和容器构件。

5.优点

  • 组合模式可以清楚地定义分层次的复杂对象,表示对象的全部或部分层次,它让客户端忽略了层次的差异,方便对整个层次结构进行控制。
  • 客户端可以一致地使用一个组合结构或其中单个对象,不必关心处理的是单个对象还是整个组合结构,简化了客户端代码。
  • 在组合模式中增加新的树枝节点和叶子节点都很方便,无须对现有类库进行任何修改,符合“开闭原则”。
  • 组合模式为树形结构的面向对象实现提供了一种灵活的解决方案,通过叶子节点和树枝节点的递归组合,可以形成复杂的树形结构,但对树形结构的控制却非常简单。

6.使用场景

组合模式正是应树形结构而生,所以组合模式的使用场景就是出现树形结构的地方。比如:文件目录显示,多级目录呈现等树形结构数据的操作。

http://www.yayakq.cn/news/973130/

相关文章:

  • 如何用模板建站大门户网站
  • 网站首页制作怎么做的做免费外贸网站册域名
  • 外网设计灵感网站怎么停止网站
  • 网加做网站推广90设计网官网登录
  • 汉滨网站建设网站建设用户体验
  • 重庆模板网站建设怎么样wordpress 文章归档页面
  • 辽宁建设厅勘察设计网站怎样注册网站做销售
  • 龙岩市住房和城乡建设厅网站首页公众号建网站
  • 一个人做电商网站难吗淘宝客购物网站源码
  • 做招聘网站需要什么人员软件开发的职业规划1000
  • 医疗方面的网站建设深圳制作网站培训学校
  • 成都水高新区建设局官方网站网站内容的设计与实现
  • 多个域名绑定同一网站吗株洲网站优化哪家强
  • 郑州快速网站优化公司首选网站轮播动态图如何做
  • 网站设计需要什么wordpress图片分离
  • 站酷设计师网站好看wordpress主题
  • 焦作做网站优化源码网站git
  • 苏州网站制作方法头条网站怎么做的
  • 免费开源代码网站软件开发工具的基本功能
  • 营销型网站网站设计韩国风格网站
  • 在猪八戒做网站有保障吗网站推销话术
  • 明星网页网站制作wordpress把文章转语音
  • 网站建设的售后服务怎么写网站开发宣传
  • 海口专业网站制作策划wordpress博客软件
  • 招标代理网站建设怎么搜索整个网站内容
  • 有哪些做任务的网站网站 二级域名
  • 餐饮业网站建设网站搭建技术有哪些
  • 网站死链接淘宝商家版登录入口
  • 项城市住房和城乡建设局网站网站备案时网站没有内容可以
  • 通信工程建设网站怎么设计页面