博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Net设计模式实例之组合模式(Composite Pattern)(2)
阅读量:7049 次
发布时间:2019-06-28

本文共 1011 字,大约阅读时间需要 3 分钟。

、场景

假设公司组织结构为:
--
总结理
----
技术部门经理
------
开发人员
A
------
开发人员
B
----
销售部门经理
总经理直接领导技术部经理和销售部经理,技术部经理直接领导开发人员
A
和开发人员
B
。销售部经理暂时没有直接下属员工,随着公司规模增大,销售部门会新增销售员工。计算组织结构的总工资状况。
如下图所示

IComponent
接口:此接口包括了
Component
Composite
的所有属性,公司每个角色都有职称
Title
和工资待遇
Salary
Add
方法把员工加入到组织团队中。
Component
叶子节点:叶节点没有子节点,
Add
方法实现没有任何意义。
Composite
组合类:此类有一个员工集合
_listEmployees,Add
方法向此集合中添加员工信息。
GetCost
方法获得组织结构中的工资待遇总和

、代码

1
、接口
IComponent
  1. public interface IComponent   
  2.     {   
  3.         string Title { getset; }   
  4.         decimal Salary { getset; }   
  5.         void Add(IComponent c);   
  6.         void GetCost(ref decimal salary);   
  7.     }   
8.   
 
 
2
、叶节点
Component 
  1. public class Component : IComponent   
  2.     {   
  3.         public string Title { getset; }   
  4.         public decimal Salary { getset; }   
  5.   
  6.         public Component(string Title, decimal Salary)   
  7.         {   
  8.             this.Title = Title;   
  9.             this.Salary = Salary;   
  10.         }   
  11.   
  12.         public void Add(IComponent c)   
  13.         {   
  14.             Console.WriteLine("Cannot add to the leaf!");   
  15.         }   
  16.   
  17.         public void GetCost(ref decimal salary)   
  18.         {   
  19.             salary += Salary;   
  20.         }   
  21.     }   
22.   
 
本文转自 灵动生活 51CTO博客,原文链接:http://blog.51cto.com/smartlife/267505,如需转载请自行联系原作者
你可能感兴趣的文章
Spark Streaming源码解读之数据清理 内幕
查看>>
项目打包流程
查看>>
vue-cli项目动态引用图片链接问题
查看>>
合格程序员每天每周每月每年应该做的事
查看>>
macbook pro(2012款)更换ssd硬盘(光驱拆除换成ssd,原有硬盘仍然使用)
查看>>
Stream API(三)--原始类型流特化
查看>>
使用webiopi控制树莓派的GPIO引脚电平(WEB在线管理)
查看>>
js中call与apply
查看>>
隐式转换
查看>>
(转)直接拿来用!最火的iOS开源项目(二)
查看>>
mybatis 实体嵌套查询
查看>>
跨境物流链路怎么做?菜鸟工程师打造了全球通关“神器”
查看>>
mysql数据库的修改
查看>>
Ubuntu Server 16升級到Ubuntu Server 18操作步驟
查看>>
Android中ViewGroup
查看>>
世界上最受欢迎的10个Linux发行版
查看>>
Ubuntu 14.04数据库服务器--mysql的安装,配置,卸载
查看>>
网站后端_Python+Flask.0005.FLASK调试模式之开启DEBUG与PIN使用?
查看>>
用pushd、popd和cd - 快速定位目录
查看>>
Android安全防护之旅---带你把Apk混淆成中文语言代码
查看>>