设计模式之组合模式
时间:2022-07-22
本文章向大家介绍设计模式之组合模式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
设计模式之组合模式
结构
说明
Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly.
把多个对象组成树状结构来表示局部与整体,这样用户可以一样的对待单个对象和对象的组合。
适用条件
- 四则运算、逻辑运算以及 SQL 语句等都可以用组合模式表示;
- 命令: 一个命令经常可以有若干个子命令表示;
- 事务: 最典型的事务时测试用例。
实现
interface IGraphic {
void Print();
}
class CompositeGraphic : IGraphic {
private readonly IList<IGraphic> _childGraphics = new List<IGraphic>();
public void Print() {
foreach (var childGraphic in _childGraphics) {
childGraphic.Print();
}
}
public void Add(IGraphic graphic) {
this._childGraphics.Add(graphic);
}
public void Remove(IGraphic graphic) {
this._childGraphics.Remove(graphic);
}
}
class Ellipse : IGraphic {
public void Print() {
Console.WriteLine("Ellipse");
}
}
class Program {
static void Main(string[] args) {
var ellipse1 = new Ellipse();
var ellipse2 = new Ellipse();
var ellipse3 = new Ellipse();
var ellipse4 = new Ellipse();
var graphic = new CompositeGraphic();
var graphic1 = new CompositeGraphic();
var graphic2 = new CompositeGraphic();
graphic1.Add(ellipse1);
graphic1.Add(ellipse2);
graphic1.Add(ellipse3);
graphic2.Add(ellipse4);
graphic.Add(graphic1);
graphic.Add(graphic2);
graphic.Print();
Console.ReadKey();
}
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Selenium及python实现滚动操作多种方法
- PHP使用JPGRAPH制作圆柱图的方法详解
- PHP 实现超简单的SESSION与COOKIE登录验证功能示例
- PHP 图像处理与SESSION制作超简单验证码的方法示例
- 简述PHP7.4 新特性和废弃的功能
- laravel5.1框架下的批量赋值实现方法分析
- Laravel框架环境与配置操作实例分析
- 记Laravel调用Gin接口调用formData上传文件的实现方法
- Laravel框架视图和模型操作方法分析
- 接口测试框架实战(六) | 配置的数据驱动
- PHP连续签到功能实现方法详解
- PHP实现发送微博消息功能完整示例
- php实现快速对二维数组某一列进行组装的方法小结
- PHP实现提取多维数组指定一列的方法总结
- PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结