美文网首页
结构型开发模式-组合模式

结构型开发模式-组合模式

作者: HideOnBush | 来源:发表于2016-04-17 19:20 被阅读250次

模式动机

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

模式结构

  • Component: 抽象结构
  • leaf: 叶子结构
  • Composite: 容器结构
  • Client: 客户端

组合模式实例与解析

实例:水果盘

在水果盘(Plate)中有一些水果,如苹果(Apple)、香蕉(Banana)、梨子(Pear),当然大水果盘中还可以有小水果盘,现需要对盘中的水果进行遍历(吃),当然如果对一个水果盘执行“吃”方法,实际上就是吃其中的水果。

抽象结构

 public abstract class MyElement {
     public abstract void eat();
    }

叶子结构

public class Apple extends MyElement{
     public void eat(){
       System.out.peintln("eat apple !");
     }
   }
   
public class Pear extends MyElement {
    public void eat(){
         System.out.println("eat pear !");
    }
}
public class Banana extends MyElement{
    public void eat(){
        System.out.println("eat banana !");
    }
}   

容器结构

public class Plate extends MyElement{
     private ArrayList list = new ArrayList();
     public void add(MyElement element)
         list.add(element);
     }
     public void delete(MyElement element{
        list.delete(element);
     }
     
     public void eat(){
          for(Object obj: list){
              ((MyElement)obj).eat();
          }   
     }
}

客户端

pubic class Client{
    public static void main(String[] args{
       MyElement obj1, obj2, obj3, obj4, obj5;
       Plate plate1, plate2, plate3;
       obj1 = new Apple();
       obj2 = new Pear();
       plate1 = new Plate();
       plate1.add(obj1);
       plate2.add(obj2);
       
       obj3 = new Banana();
       obj4 = new  Banana();
       plate2 = new Plate();
       plate2.add(obj3);
       plate2.add(obj4);
       
       obj5 = new Apple();
       plate3 = new Plate();
       
       plate3.add(plate1);
       plate3.add(plate2);
       plate3.add(obj5);
       
       plate3.eat();
    }
}

模式试用环境

  • 需要表示一个对象整体或部分层次,在具有整体和部分的层次结构中,希望通过一种方式忽略整体与部分的差异,可以一致地对待它们。
  • 让客户能够忽略不同对象层次的变化,客户端可以针对抽象构件编程,无须关心对象层次结构的细节。
  • 对象的结构是动态的并且复杂程度不一样,但客户需要一致地处理它们。

相关文章

  • 结构型模式:组合模式

    文章首发:结构型模式:组合模式 七大结构型模式之三:组合模式。 简介 姓名 :组合模式 英文名 :Composit...

  • 设计模式 - 代理模式、委托模式

    前言 在开发中强调,少用继承,多用组合,在结构型模式中组合模式、装饰者模式、代理模式都能很好避免真实对象或者更好的...

  • 结构型模式8-结构型模式总结

    结构型模式8-结构型模式总结 结构型模式总共有7种: 适配器模式(Adapter) 组合模式(Composite)...

  • 结构型开发模式-组合模式

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

  • Android设计模式之(19)----组合模式

    组合模式 组合模式属于结构型设计模式. 组合模式又可叫做【部分-整体】模式.它将部分与整体的关系通过树的形式表现出...

  • Android设计模式——组合模式(七大结构型)

    1.组合模式介绍 组合模式(Composite Pattern)也称为部分整体模式,是七大结构型设计模式之...

  • 适配器模式

    之前介绍的是创建对象的几个模式,现在开始讲结构型模式。什么是结构型模式?官方解释是:结构型模式涉及到如何组合类和对...

  • 结构型模式2-组合模式

    结构型模式2-组合模式 组合模式Composite 意图 将对象组合成属性结构,以表示“部分-整体”的层次结构。c...

  • 组合模式

    组合模式(Composite Pattern)又叫部分整体模式,是一种结构型模式,其依据树形结构来组合对象,用来表...

  • 设计模式组合模式

    1.组合模式的定义及使用场景组合模式也称为部分整体模式,结构型设计模式之一,组合模式比较简单,它将一组相似的对象看...

网友评论

      本文标题:结构型开发模式-组合模式

      本文链接:https://www.haomeiwen.com/subject/pipolttx.html