第十一篇 设计模式--组合模式

来源:互联网 发布:系统修复软件 编辑:程序博客网 时间:2024/05/16 19:28

定义:将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。

代码:

package composite_model;import java.util.ArrayList;/** * @author naivor *组合模式-场景类 */public class CompositeModel {public static void main(String[] args) {Component root=new Composite("root");  //长出根节点root.addComponent(new Leaf("leaf A"));  //根节点长出叶AComponent compositeB=new Composite("composite B");root.addComponent(compositeB);//根节点长出枝节点BcompositeB.addComponent(new Leaf("leaf AA"));  //枝节点B长出叶AAComponent componentBB=new Composite("composite BB");compositeB.addComponent(componentBB);//枝节点B长出枝节点BBroot.operate();}}/** *  * @author naivor *组合模式-节点抽象类 */abstract class Component {private String name;public Component() {}public Component(String name) {this.name = name;}public void addComponent(Component component) {};public void removeComponent(Component component) {};public abstract void operate();}/** *  * @author naivor *组合模式-叶节点类 */class Leaf extends Component {public Leaf() {}public Leaf(String name) {super(name);}@Overridepublic void operate() {//叶节点的业务逻辑}}/** *  * @author naivor *组合模式-枝节点类 */class Composite extends Component {private ArrayList<Component> coms=new ArrayList<Component>();public Composite() {}public Composite(String name) {super(name);}@Overridepublic void addComponent(Component component) {coms.add(component);}@Overridepublic void removeComponent(Component component) {coms.remove(component);}@Overridepublic void operate() {for (Component component : coms) {component.operate();}//枝节点的业务逻辑}}


0 0
原创粉丝点击