设计模式之组合模式

Java39

本文通过对老王、小王对书房、书架及各类图书的管理进行探讨,引出结构设计纹样家族中的一个重要成员--组合纹样。本文将给出这两种组合模式的典型代码实现。为了加深理解,我们将在第三部分介绍组合模式在源代码中的实际应用,并在最后总结对设计模式的研究后的一些思考。

[En]

This paper discusses the management of study, bookshelf and all kinds of books by Lao Wang and Xiao Wang, and leads to the combination pattern, which is an important member of the structural design pattern family. This paper will give the typical code implementation of the two combination patterns. In order to deepen the understanding, we will introduce the practical application of the combination pattern in the source code in the third part, and finally summarize some thoughts after the study of the design pattern.

读者可以拉取完整代码到本地进行学习,实现代码均测试通过后上传到码云

一、引出问题

上篇文章中老王给小王买车以后,小王对老王感激涕零,看着老王凌乱的书房,小王提出要帮助老王整理整理他的书架。

小王开始了他的分析。老王平时博览群书,中文、英文、梵文...每个语种占满了书架,而每个语种中又分经济学、计算机学、社会学等等类目。这是典型的分层次结构,将语种比作是图书的子类,类目是语种的子类结构划分。

图书、语种、品类作为组织结构,它们之间没有继承关系,而是一种树形结构,可以更好地实现管理操作。

[En]

Books, languages, categories are regarded as organizational structure, there is no inheritance relationship between them, but a tree structure, which can better achieve management operations.

二、概念与使用

实际上,小王提出来的设计思路正是结构型设计模式中的组合模式,我们首先看一下组合模式的相关概念, 组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示" 整体-部分"的层次关系。组合模式依据 树形结构来组合对象,用来表示部分以及整体层次。

组合模式使用户能够一致地访问单个对象和组合对象,即组合允许客户以一致的方式处理单个对象和组合对象。

[En]

The composition pattern enables users to have consistent access to individual objects and combined objects, that is, the combination allows customers to deal with individual objects and combined objects in a consistent manner.

用白话解释,即在实际应用中,所有的书都是按照树的模式组合的。老王在找书的时候,无论是看某种类型的书,还是看某种语种的书,都可以用同样的姿势来保证参观的一致性。

[En]

Explained in vernacular, that is, in practical application, all books are combined according to the tree pattern. When Lao Wang is looking for books, whether he visits a certain type of book or a certain language book, he can use the same posture to ensure the consistency of the visit.

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
Java

接口(Java)

基本介绍 普通类:只有具体实现 抽象类:具体实现和规范(抽象方法)都有 接口:只有规范(抽象方法)自己无法写方法~专业的约束!约束和现实分离:面向接口编程 接口就是规范,定义的是一组规则 接口的本质是...
Java

网络编程杂谈之TCP协议

TCP协议属于网络分层中的传输层,传输层作用的就是建立端口与端口的通信,而其下一层网络层的主要作用是建立"主机到主机"的通信,所以在我们日常进行网络编程时只要确定主机和端口,就能实现程序之间的数据交流...
Java

实现线程的两种方式

实现Runnable接口如果当前类 不仅要继承其他类( 非Thread类), 还要实现多线程,那么 只能通过当前类实现 Runnable接口来 创建Thread类对象。 实现Runnable接口的程序...
Java

spring security登录认证流程

spring security登录认证流程 1、前端携带用户名和面膜发送请求,controller接收到后,调用service的login方法 2、根据传过来的用户名和密码生成UsernamePass...
Java

我入职腾讯啦

蚂蚁金服上市的消息我想已经席卷了大家的朋友圈了,我也第一时间慰问了我所有蚂蚁的朋友,有期权的小伙伴都在估算自己变现后数字了,确实有很多老阿里人有财富自由的机会了,也有P7以下没期权苦恼的小伙伴。 事实...
Java

Fizz网关入门教程-权限校验

概述 通过网关暴露的接口,必须配置路由。 权限校验是对请求接口的客户端的认证,确认其能否访问接口。 客户端可通过 fizz-appid 请求头表明身份,即表明自身是什么应用。 管理后台可配置应用的认证...
Java

ipchat 点对点聊天工具 1.00.05 已发布

ipchat 点对点聊天工具 1.00.05 已发布。 zg-ipchat 是一款聊天工具。可实现简单的文本信息传输,无加密。 点对点直接通讯,无需中间服务器,支持 Pv6/IPv4 网络。 基于已公...
Java

Java 并发编程

基础知识 1. 为什么要使用并发编程 提升多核CPU的利用率:一般来说一台主机上的会有多个CPU核心,我们可以创建多个线程,理论 上讲操作系统可以将多个线程分配给不同的CPU去执行,每个CPU执行一个...
Java

MarkDown 简要语法学习

MarkDown 简要语法学习 标题 +空格显示标题 多个#代表不同级别标题 ,最多不超过6级。 字体 粗体 ** 斜体 * 粗斜体 *** 删除 ~~ 下划线