T设计模式组合模式.ppt

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//增加 //移除 //显示 //履行职责
}
组合模式——应用
class HRDepartment : Company
叶部件
{
public override void Add(Company c)
{
}
public override void Remove(Company c)
{
}
public override void Display(int depth)
root.Add(new FinanceDepartment("总公司财务部"));
ConcreteCompany comp = new ConcreteCompany("上海华东公司");
comp.Add(new HRDepartment("华wenku.baidu.com分公司人力资源部"));
comp.Add(new FinanceDepartment("华东分公司财务部"));
abstract class Company { private string _name; public string Name { get { return _name; } set { _name = value; } }
部件抽象接口
public Company(string name) {
this.Name = name; }
叶部件(Leaf);
在组合中表示叶节点对象,叶节点没有子节点。定义组合中原接口 对象的行为。
组合类(Composite):
定义有子节点(子部件)的部件行为。存储子节点(子部件)。 在部件抽象接口中实现与子部件相关的操作。
客户应用程序(Client):
通过部件抽象接口控制组合部件的对象。
组合模式——应用
第十章
组合模式
桥接模式的原理 桥接模式,有什么优缺点?
回顾
结构模式
适配器模式(Adapter) 桥接模式(Bridge) 组合模式(Composite) 装饰模式(Decorator) 外观模式(Facade) 享元模式(Flyweight) 代理模式(Proxy)
本章任务
组合模式——引子
组合模式——定义
{

}
}
组合模式——应用
class Program
{ static void Main(string[] args)
客户端调用
{
ConcreteCompany root = new ConcreteCompany("北京总公司");
root.Add(new HRDepartment("总公司人力资源部"));
缺点
使得设计变得更加抽象。
组合模式——适用性
适用性
想表示一个对象整体或部分层次。 想让客户能够忽略不同对象的层次的变化。 对象的结构是动态的并且复杂程度不一样,但客户需要一致地处 理它们。
总结
简单描述下,什么是组合模式? 组合模式,有什么优缺点?
{
Console.WriteLine(new String('-', depth) + Name);
}
public override void LineOfDuty()
{
Console.WriteLine("{0} 员工招聘培训管理", Name);
}
}
组合模式——应用
class ConcreteCompany : Company
组合类
{
public override void Add(Company c)
{

}
public override void Remove(Company c)
{

}
public override void Display(int depth)
{

}
public override void LineOfDuty()
root.Add(comp);

Console.WriteLine("\n结构图:");
root.Display(1);
Console.WriteLine("\n职责:");
root.LineOfDuty();
Console.Read();
}
组合模式——优缺点
优缺点
优点
可以清楚地定义分层次的复杂对象,表示对象的全部或部分层次, 使得增加新部件也更容易,提供了对象管理的灵活接口。其对树结 构的控制有神奇的功效。
public abstract void Add(Company c); public abstract void Remove(Company c); public abstract void Display(int depth); public abstract void LineOfDuty();
定义
组合多个对象形成树形结构以表示整体-部分的结构层次。其对 单个对象和组合对象的使用具有一致性。
组合模式——结构图
参与者
组合模式——参与者
部件抽象接口(Component):
为组合的对象声明接口。 某些情况下,实现从此接口派生出所有类共有的默认行为。定义一 个接口可以访问及管理它的多个子部件。如果必要,也可以在递归 结构中定义一个接口访问它的父节点,并且实现它。
相关文档
最新文档