设计模式之组合模式(Composite Pattern)

类图

设计模式之组合模式(Composite Pattern)

含义

  1. 定义通用接口Component
  2. Leaf是Component的具体实现,实现具体的operation操作
  3. Composite的operation则间接调用组合的Component的operation方法

优点

  1. 对于客户端代码而言,只需面向Component接口,执行其operation方法即可。
  2. 适用于树状的数据结构

示例

一个画图的小程序,类图如下所示:
设计模式之组合模式(Composite Pattern)

客户端代码:

package org.lin.pattern;

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Client {
	public static void main(String[] args) {
		JFrame frame = new JFrame("paint");
		frame.setSize(1000, 700);
		frame.setLocationRelativeTo(null);
		CompositeShape shape = new CompositeShape();
		shape.addShape(new Circle(0, 0, Color.RED, 100));
		shape.addShape(new Circle(300, 300, Color.BLUE, 100));
		shape.addShape(new Rectengle(150, 150, Color.PINK, 400, 200));
		JPanel panel = new JPanel() {
			private static final long serialVersionUID = 1L;

			@Override
			protected void paintComponent(Graphics g) {
				super.paintComponent(g);
				shape.print(g);
			}
		};
		panel.setSize(1000, 700);
		frame.add(panel);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}

运行效果:
设计模式之组合模式(Composite Pattern)