zoukankan      html  css  js  c++  java
  • 设计模式 组合模式

    组合模式(Composite Pattern):组成多个对象形成树形结构以表示“整体-部分”的结构层次。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性。组合模式又可以称为"部分-整体"(Part-Whole)模式,属于对象的结构模式,他将对象组织到树结构中,可以用来描述整体与部分的关系。

    模式动机:

      组合模式描述了如何将容器对象和叶子对象进行递组合,使得用户在使用时无需对他们进行区分,可以一致的对待容器对象和叶子对象。

    模式结构:

    • Component:抽象构件
    • Leaf:叶子构件
    • Composite:容器构件
    • Client:客户类

    模式分析:

      组合模式的关键是定义一个抽象类,它既可以代表叶子、又可以代表容器,而客户端针对该抽象构件类进行编程,无需知道他到底表示的时叶子还是容器,可以进行统一的处理。

      同时容器对象与抽象构件之间还建立了一个聚合关联关系,在容器对象中既可以包含叶子,也可以包含容器,以此实现递归组合,形成一个树形结构。

    具体类图:

                      

    类图解析:MyElement是定义的抽象构件类,Apple,Banana,Pear,Plate继承自它,Plate是一个果盘类,其内部包含一个MyElement类型的集合

    具体代码实现:

    Plate继承MyElement,并且eat方法里面还有对MyElement类型的对象的调用,因此可以递归的进行遍历,而不用区分其具体类型。

     组合模式的优点:

    • 可以清楚的定义分层次的复杂对象
    • 客户端可以一致的使用组合结构或其中单个对象
    • 可以形成复杂的树形结构
    • 更容易在组合体内部加入对象组件

    缺点:

    • 使设计变得更加抽象
    • 增加新构件时可能会产生一些问题
  • 相关阅读:
    .NE 学习概要
    (转)工作之路---记录LZ如何在两年半的时间内升为PM
    XP下Winform背景透明问题
    CSE(Corrupted State Exceptions) 严重异常处理办法
    (转)C#模拟键盘鼠标事件
    (转).net项目技术选型总结
    (转)MSMQ续
    (转)MSMQ(消息队列)
    (转)TCP三次握手
    Socket编程初探
  • 原文地址:https://www.cnblogs.com/wfswf/p/15619608.html
Copyright © 2011-2022 走看看