Composite模式定义:
将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性.
Composite好处:
1.使客户端调用简单,客户端可以一致的使用组合结构或其中单个对象,用户就不必关系自己处理的是单个对象还是整个组合结构,这就简化了客户端代码。
2.更容易在组合体内加入对象部件. 客户端不必因为加入了新的对象部件而更改代码
如一棵树有树枝和叶子,树枝也有叶子,叶子为最小的部分.从大到小顺序Tree->Limb->Leaf
public abstract class Component
{
public String name;
public ArrayList<Component> list;
public Boolean Add(Component item)
{
return false;
}
public Boolean Remove(Component item)
{
return false;
}
public abstract void print();
public abstract void Operation();
}
public class CompositeComponent extends Component
{
public CompositeComponent()
{
list = new ArrayList<Component>();
}
@Override
public void Operation()
{
for (Component item : list)
{
item.print();
item.Operation();
}
}
public Boolean Add(Component item)
{
list.add(item);
return true;
}
public Boolean Remove(Component item)
{
int i = list.indexOf(item);
if (i > 0)
{
list.remove(i);
}
return true;
}
public void print()
{
System.out.println("This is Root");
}
}
public class LimbCoponent extends CompositeComponent
{
public void print()
{
System.out.println(name);
}
}
public class Leaf extends Component
{
@Override
public void print()
{
System.out.println(name);
}
public void Operation()
{
System.out.println("Defoliation on wings");
}
}
public class TestComposite
{
public static void main(String[] args)
{
Component tree = new CompositeComponent();
Component leaf = new Leaf();
Component limb = new LimbCoponent();
limb.name = "This is an limb";
leaf.name = "This is an leaf";
limb.Add(leaf);
tree.Add(limb);
tree.Operation();
}
}
分享到:
相关推荐
设计模式之 Composite(组合) 就是将类用树形结构组合成一个单位.你向别人介绍你是某单位,你是单位中的一个元素,别人和你做买卖,相当于 和单位做买卖。文章中还对 Jive再进行了剖析。 设计模式之 Decorator(装饰...
从提供的文件信息中我们可以提取到的IT知识点主要集中在C++设计模式方面。具体的知识点可以分解为以下几点: ...同时,也能对学习设计模式的过程有一个更全面的认识,从而更好地掌握这些设计思想。
《深入浅出设计模式样章》是一本专为软件开发者准备的指南,旨在帮助读者理解和掌握设计模式这一核心编程概念...样章虽然只是全书的一部分,但已经足够让读者对设计模式有初步的认识,并激发他们进一步深入研究的兴趣。
装饰模式:装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案, 装饰模式 提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由 一些基本功能的排列组合而产生...
通过对GoF的23种设计模式的学习和理解,我们可以深刻认识到这些模式对于提高软件质量和效率的重要性。每个模式都针对特定的问题提出了有效的解决方案,帮助我们更好地设计和构建高质量的软件系统。同时,通过实际的...
而在讨论设计模式时,双分派的概念可以进一步提升对Visitor模式的认识。设计模式的重要性不言而喻,它们是软件设计中不可或缺的工具,能够使开发者更加高效地进行面向对象的分析和设计。 在本书的附录部分,作者...
通过对比分析,读者可以更清楚地认识到不同模式的适用场景及其优缺点,从而能够更加明智地选择合适的设计模式来解决特定问题。 #### 复合模式 (Composite Pattern) 复合模式允许将对象组织成树形结构来表示“部分-...
第1章到第11章陆续介绍的设计模式为Strategy、Observer、Decorator、Abstract Factory、Factory Method、Singleton、Command、Adapter、Facade、Templat Method、Iterator、Composite、State、Proxy。最后三章比较...
这些书籍能够帮助开发者从不同的角度和深度来理解JavaScript,加深对语言特性的认识,从而更好地应用设计模式。 这本书适合希望提高自己在设计模式方面知识,并且计划将这些知识应用于JavaScript编程中的专业开发者...
这些设计模式的源码示例将帮助你深入理解每种模式的核心思想和应用场景,通过实际编码加深对设计模式原理的认识,提升软件开发的灵活性和可维护性。学习并熟练运用这些模式,将有助于你编写出更高质量的C#代码。
### Java常用的设计模式详解 #### 一、工厂模式(Factory) **工厂模式**是一种常用的创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们创建一个工厂类来负责创建产品类的对象。当系统需要创建...
本书中提到的“设计模式”不仅仅存在于代码中,更需要开发者去认识、理解和充分利用它们。 这本书覆盖了多种经典的设计模式,如单例模式(Singleton)、抽象工厂模式(Abstract Factory)、责任链模式(Chain of ...
类型 设计模式主要分为三类:创建型模式、结构型模式和行为型模式。 1. 创建型模式(Creational Patterns):如单例模式(Singleton)、工厂模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式...
1. **掌握设计模式的应用**:通过实现抽象工厂、单例、组合、迭代器等设计模式,让学生能够熟练运用这些模式来开发一个小型的图形编辑系统。 2. **理解设计模式的特点及应用条件**:通过实际编程项目,让学生更加...
Sun Microsystems,一家曾经的全球领先的计算技术公司,认识到SOA在现代企业中的潜力,开发了一套名为Java Composite Application Platform Suite(JCAPS)的工具集,旨在简化和加速SOA的实施。 #### Sun的SOA平台...
STM32F405是意法半导体(STMicroelectronics)推出的一款基于ARM Cortex-M4内核的微控制器,它在嵌入式开发领域广泛应用,...通过学习和实践,开发者不仅可以掌握STM32的USB功能,还能对USB复合设备有更深入的认识。