Composite:组合模式

Composite:组合模式,当需要组合两个类的时候,比如画图:需要画直綫和点,那麽如果分别调用画直綫和调用画点的时候,用起来,会觉得很麻烦,如果包在一起,这个东西既可以让你用来画直綫又可以画点,不是很好用吗?
两者的设计分别实现是:
前者:class Line{draw(){draw a line}} class Point{draw(){draw point}}
後者:class Component}{vec,vec,draw(Line){},draw(Point){}}
这样就可以画一个包含了綫和点的图形了;
实战举例:
场景是:20个箱子,n个物品(可以增加和删除),操作:把物品放入箱子,物品可以放入和取走,有多个箱子,需要管理物品(资讯,在哪个箱子)和箱子(资讯,箱内物品资讯);
处理的时候,两者应该是互相独立,同时又有交集的方式,所以处理的时候,就会考虑交集怎麽办?这时候,使用了组合模式,用一个管理两者的组合类来处理两者;设计和实现的时候,我还没学习组合模式,但是最近看到这个模式的时候,想起这个事情,因爲处理这个事情的时候,思考了一段时间才想到这样比较好:我需要单独处理物品,又需要单独处理箱子,所以这两个必须有独立的类来处理,同时又要处理交集的事情,所以必须有处理交集的类,自然就出现了组合模式了;
https://ithelp.ithome.com.tw/upload/images/20210810/20139212kelrU64D4X.png


<<:  强制访问控制(MAC)- 安全许可(Security clearance)

>>:  Day30 参加职训(机器学习与资料分析工程师培训班),Tensorflow.keras

成为 Scrum Master

前言 今天来部份自我介绍,聊聊身为 Scrum Master 的一些经历。一如系列文章的初衷,希望能...

连续 30 天 玩玩看 ProtoPie - Day 19

ProtoPie 其实也有一些我这次可能玩不到的部分。 也就是企业方案。(还是我 Request ...

[Day11] CH08:积沙成塔——Array & ArrayList(上)

很快地已经学了十天,今天又是一个新的开始,今天要来认识「阵列」。 阵列(Array)是由同型别的相关...

Day 20: Informix

Day 20: Informix Prereguisite 环境: SD → QA → VE → O...

Golang - Stack & Heap

常常在社群里面看到从其他程序语言转来用Go会有的问题 这些是找到的资料跟总结 同步更新在github...