【每日一记】设计模式——组合模式
来源:互联网 发布:药店用的软件 编辑:程序博客网 时间:2024/05/01 16:29
概述
- 定义:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性
- 适用场景:表示对象的部分-整体层次结构,同时希望用户忽略组合对象与单个对象的不同
实现
public abstract class Component { protected String name; public Component(String name) { this.name = name; } public abstract void add(Component component); public abstract void remove(Component component); public abstract void foreach();}class Composite extends Component { private List<Component> markets = new ArrayList<>(); public Composite(String name) { super(name); } @Override public void add(Component component) { markets.add(component); } @Override public void remove(Component component) { markets.remove(component); } @Override public void foreach() { System.out.println(name); for (Component m : markets) { m.foreach(); } }}class Leaf extends Component { public Leaf(String name) { super(name); } @Override public void add(Component component) { } @Override public void remove(Component component) { } @Override public void foreach() { System.out.println(name); }}
// 客户端public class Client { public static void main(String[] args) { Component root = new Composite("root"); Component c1 = new Composite("composite 1"); Component c2 = new Leaf("leaf 1"); Component c3 = new Leaf("leaf 1-1"); root.add(c1); root.add(c2); market1.add(c3); root.foreach(); }}
通过组合模式模糊了简单元素和复杂元素,使客户端对两者一视同仁,从而降低了客户端对于复杂元素内部结构的耦合
实际应用
org.w3c.dom.Node
0 0
- 【每日一记】设计模式——组合模式
- 每日设计模式——组合模式
- 【每日一记】设计模式——单例模式
- 【每日一记】设计模式——工厂模式
- 【每日一记】设计模式——建造者模式
- 【每日一记】设计模式——原型模式
- 【每日一记】设计模式——适配器模式
- 【每日一记】设计模式——装饰器模式
- 【每日一记】设计模式——代理模式
- 【每日一记】设计模式——外观模式
- 【每日一记】设计模式——桥接模式
- 【每日一记】设计模式——享元模式
- 【每日一记】设计模式——策略模式
- 【每日一记】设计模式——模板方法模式
- 【每日一记】设计模式——观察者模式
- 【每日一记】设计模式——迭代器模式
- 【每日一记】设计模式——责任链模式
- 【每日一记】设计模式——命令模式
- KISSY基础篇乄KISSY之DOM(1)
- 16 - 12 - 17 十大排序算法总结(一) 之 冒泡,简选,直插,希尔排序
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
- Corefig for Windows Server 2012 Core and Hyper-V Server 2012
- Dubbo(二)聚合工程之实体类,通用Parent Demo
- 【每日一记】设计模式——组合模式
- 【51nod】1134 最长递增子序列
- Android开发中的多线程
- 正则表达式笔记(java编程思想)
- 静态路由的设置以及缺省路由的发布
- poj 2299 c++:Ultra-QuickSort
- 简易记账app
- Android动画-Frame Animation(帧动画)
- Ubuntu 16.04安装有道词典的方法