前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式之组合模式

设计模式之组合模式

作者头像
beginor
发布2020-08-06 21:14:34
3070
发布2020-08-06 21:14:34
举报

设计模式之组合模式

结构

组合模式
组合模式

说明

Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly.

把多个对象组成树状结构来表示局部与整体,这样用户可以一样的对待单个对象和对象的组合。

适用条件

  • 四则运算、逻辑运算以及 SQL 语句等都可以用组合模式表示;
  • 命令: 一个命令经常可以有若干个子命令表示;
  • 事务: 最典型的事务时测试用例。

实现

代码语言:javascript
复制
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();
   }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 设计模式之组合模式
    • 结构
      • 说明
        • 适用条件
          • 实现
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档