Design Patterns 结构模式 之 Composite 模式
组合模式:将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性.
1),安全式
2),透明式
组合(Composite)模式主要角色:
1.Component角色
2.Leaf角色
3.Composite角色
/**
* 组件抽象角色
*/
public interface Component {
public void run();
}
/**
* 叶子角色
*/
public class Leaf implements Component{
public void run(){
System.out.println(" run invoked...");
}
}
//组合角色
实现组件角色接口,并且添加,删除的也是组件角色
Composite本来可以再包含Leaf和Composite的。而 Leaf和Composite 又都属于 Component,所以增加,删除 的是Component
组合模式主要分为2种
1 透明式
添加Component对象的操作定义在Component角色中,这样的话不仅Composite需要实现这些方法,Leaf也需要实现这些方法,
而这些方法对于Leaf来说没有任何意义,不过将系统实现统一起来了,因此对用户来说透明(用户无需区分Composite还是Leaf)
,因为这些角色中都具备这些方法。
2 安全式
添加Component对象的操作定义在Composite角色中,这样的话Leaf就无需实现这些方法(因为Leaf本身根本不需要实现这些方法)
public class Composite implements Component{
List<Component> list = new ArrayList<Component>();
//添加
public void addComponent(Component component){
list.add(component);
}
//删除
public void removeComponent(Component component){
list.remove(component);
}
//get
public List<Component> getAll(){
return list;
}
public void run(){
for(Component component : list){
component.run();
}
}
}
public class Client {
public static void main(String[] args){
Leaf leaf1 = new Leaf();
Leaf leaf2 = new Leaf();
Leaf leaf3 = new Leaf();
Composite composite = new Composite();
composite.addComponent(leaf1);
composite.addComponent(leaf2);
Composite composite1 = new Composite();
composite1.addComponent(composite);
composite1.addComponent(leaf3);
composite1.run();
}
}
分享到:
相关推荐
- 组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构。 - 享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象。 3. 行为型模式:关注对象之间的通信,用来描述类或对象...
标题中的"DesignPatterns.pdf_objects_designpatterns_"暗示了这可能是一个关于面向对象设计模式的PDF文档,而描述中的"Design patterns elements of reusable objects"进一步确认了这一点。设计模式的核心理念在于...
设计模式是软件工程领域中的重要概念,源自于1994年由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位杰出的软件工程师合著的经典书籍《设计模式:可复用面向对象软件的基础》(Design Patterns: ...
这个"DesignPatterns.zip"压缩包文件包含了一份英文版的设计模式资料,可能是由设计模式领域的四位知名专家——Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides,也就是常说的“四人组”所著的《设计模式...
《Java 企业设计模式》(Java Enterprise Design Patterns) 是一本深入探讨如何在Java环境中应用设计模式的著作。这本书的核心目标是提高软件开发的效率、可维护性和可扩展性,通过介绍一系列已被广泛验证的设计模式...
使得它们可以独立变化,外观模式(Facade)提供一个简单的统一接口来访问复杂的子系统,组合模式(Composite)允许将对象组成树形结构以表示“部分-整体”的层次关系,享元模式(Flyweight)用于有效地使用大量细...
**设计模式**(Design Patterns)是软件工程中的一个重要概念,它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。本章节将从多个角度对设计模式进行深入探讨。 #### 二、设计模式的基本定义 ...
6. **组合模式**(Composite):允许你将对象组合成树形结构来表现“整体-部分”层次结构。 7. **享元模式**(Flyweight):使用共享对象,有效地支持大量细粒度的对象。 **行为型模式**关注对象之间的责任分配和...
We've tried hard to avoid both of these categories with Design Patterns Explained Simply. This book is fast and simple way to get the idea behind each of the 29 popular design patterns. The book is ...
本书“Scala Design Patterns”结合了理论与实践,通过一系列的示例代码,帮助开发者理解和应用设计模式。这些源码是书中讲解内容的具体实现,旨在帮助读者深入理解每个模式的工作原理。 1. 工厂模式(Factory ...
- **组合模式(Composite)**:将对象组合成树形结构以表示“部分-整体”的层次结构。 - **装饰器模式(Decorator)**:动态地给一个对象添加一些额外的职责。 - **外观模式(Facade)**:为子系统中的一组接口提供...
- **Composite(组合)**:将对象组合成树形结构以表示“部分-整体”的层次结构。 - **Decorator(装饰)**:动态地给一个对象添加一些额外的职责。 - **Facade(外观)**:为子系统中的一组接口提供一个一致的...
《Head First Design Patterns》是设计模式领域中一本非常知名的书籍,尤其适合初学者入门。这本书以其独特的视觉风格和易于理解的讲解方式,帮助读者深入理解设计模式的核心概念和实际应用。Part2部分主要涵盖了...
10. **组合模式(Composite)**:将对象组合成树形结构以表示“部分-整体”的层次结构。 #### 结论 通过学习《Design_Patterns_Explained》,开发者不仅能够掌握这十个设计模式的具体应用,还能深刻理解面向对象编程...
Learn how to implement design patterns in Java: each pattern in Java Design Patterns is a complete implementation and the output is generated using Eclipse, making the code accessible to all....
《Design Patterns设计模式速查手册HandBook系列》是由FengGe精心整理的一份关于软件设计模式的重要参考资料。这本书集合了多种经典的设计模式,主要面向Java开发者,旨在提高开发效率和代码质量,使得软件系统更加...
23. **享元-组合模式(Flyweight-Composite)**:结合享元模式和组合模式,用于更高效地处理大量的对象,同时保持结构的灵活性。 《GoF设计模式》中文版的PDF文件列表包括01到10的章节,覆盖了上述所有设计模式的...
### 组合模式(Composite Pattern) 组合模式将对象组合成树形结构以表示部分整体的层次结构。在JavaScript中,这可以通过创建一个具有子节点属性的对象来实现,从而允许客户端代码一致地处理单个对象和组合对象。 ...
《Head First Design Patterns》是一本深受开发者喜爱的设计模式教程,英文版的影印版本提供了清晰易读的阅读体验。设计模式是软件工程中的一种最佳实践,它总结了在特定上下文中解决问题的常见方法,旨在提高代码的...