`
美丽的小岛
  • 浏览: 309601 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

知识点树与组合模式

 
阅读更多

 知识点树与组合设计模式:

知识点树在库中根据编号来实现,在java类中用组合模式来实现。

uml图:



 JAVA实现代码:

 

AbstractNode抽象类:

package test.GOF.composite;

public abstract class AbstractNode {
	public abstract boolean add(AbstractNode node);

	public abstract boolean remove(AbstractNode node);

	public abstract void diplay(int deth);

}

 

LeafNode类:

package test.GOF.composite;

public class LeafNode extends AbstractNode {

	private String name = "";

	public LeafNode() {
	}

	public LeafNode(String name) {
		this.name = name;
	}

	@Override
	public boolean add(AbstractNode node) {
		System.out.println("是叶子了,没有子节点了!");
		return false;
	}

	@Override
	public void diplay(int depth) {

		for (int i = 0; i < depth; i++) {
			System.out.print("-");
		}
		System.out.println(this.name);
	}

	@Override
	public boolean remove(AbstractNode node) {
		System.out.println("没有子节点,不可删除!");
		return false;
	}

}

 

 Node类:

package test.GOF.composite;

import java.util.ArrayList;
import java.util.List;

public class Node extends AbstractNode {
	String name = "";
	List<AbstractNode> child = new ArrayList<AbstractNode>();

	public Node() {
	}

	public Node(String name) {
		this.name = name;
	}

	@Override
	public boolean add(AbstractNode node) {
		return child.add(node);
	}

	@Override
	public void diplay(int depth) {
		for (int i = 0; i < depth; i++) {
			System.out.print("-");
		}
		System.out.println(this.name);
		for (AbstractNode node : child) {
			node.diplay(depth + 1);
		}
	}

	@Override
	public boolean remove(AbstractNode node) {
			return child.remove(node);
	}

}

 

MainTest类:

package test.GOF.composite;

public class MainTest {
	public static void main(String[] args) {
		
		LeafNode leaf1 = new LeafNode("010101");
		LeafNode leaf2 = new LeafNode("010102");
		LeafNode leaf3 = new LeafNode("010103");
		Node node1 = new Node("0101");
		node1.add(leaf1);
		node1.add(leaf2);
		node1.add(leaf3);
		
		leaf1 = new LeafNode("0102");
		leaf2 = new LeafNode("0103");
		Node root = new Node("01");
		root.add(node1);
		root.add(leaf1);
		root.add(leaf2);
	        
		root.diplay(0);

	}

}

 

  • 大小: 5.3 KB
2
1
分享到:
评论

相关推荐

    组合模式-五子棋代码.zip

    组合模式是一种对象结构型设计模式,它允许我们以树形结构来表示部分-整体关系,使得我们可以像处理单个对象一样处理整个集合。在五子棋游戏的实现中,组合模式的应用尤为关键,因为它帮助我们将棋盘上的棋子和棋盘...

    组合模式-空军指挥系统.zip

    下面将详细探讨组合模式在空军指挥系统中的应用及其相关知识点。 首先,我们要理解组合模式的核心思想:它将简单对象和组合对象平等对待,通过统一的接口来操作它们。在Java中,这通常通过定义一个公共接口或抽象类...

    软件设计模式知识点

    3. 组合模式(Composite):将对象组合成树形结构以表示"部分-整体"的层次结构。 4. 装饰模式(Decorator):动态地给一个对象添加一些额外的职责。 5. 外观模式(Facade):为子系统中的一组接口提供一个一致的界面...

    组合模式二叉树,前序、中序、后续,迭代器模式访问遍历

    在这个主题中,我们主要探讨了如何利用组合模式(Composite Pattern)构建二叉树,并通过迭代器模式(Iterator Pattern)来实现对树的遍历,包括前序、中序和后序遍历。这些是设计模式中的经典应用,对于理解和掌握...

    软件设计师中级考试知识点整理.docx

    * 结构型模式:结构型模式是指对象之间的关系,例如适配器模式、桥接模式、组合模式等。 * 行为型模式:行为型模式是指对象之间的交互,例如策略模式、状态模式、观察者模式等。 4. UML 是一种统一建模语言,用于...

    C#面向对象设计模式纵横谈(9):Composite 组合模式(结构型模式)

    #### 核心知识点详解 1. **对象容器问题与Composite模式的动机** 在面向对象系统中,经常遇到具备容器特性同时又是个体对象的情况。例如,一个文件夹既是文件也是包含其他文件或文件夹的容器。处理这类对象时,...

    设计模式学习知识点总结

    - **组合模式**:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 - **桥接模式**:将抽象部分与它的实现部分分离,以便两者可以独立变化。 - **享元模式**:...

    设计模式知识点(23种设计模式)

    设计模式知识点(23种设计模式) 设计模式是一种软件设计中常用的解决方案,旨在解决软件开发过程中遇到的各种问题,提高软件的可维护性、可扩展性和可重用性。这里总结了23种常用的设计模式,分为创建型模式、结构...

    C++设计模式之组合模式(Composite)

    知识点: * 组合模式的定义和特点 * 组合模式的实现方法(抽象基类Component、Leaf类和Composite类) * 组合模式的优点和缺点 * 组合模式在实际应用中的使用场景(菜单系统、文件系统等) 组合模式是一种非常有用...

    下拉树控件组合自定义控件

    下面我们将深入探讨下拉树控件的相关知识点。 首先,我们要理解下拉树控件的基本构成。通常,它由两部分组成:一个简单的下拉按钮和一个展开后的树形结构。点击下拉按钮后,会显示一个包含多个节点(每个节点可能有...

    数据库工程师知识点

    数据库工程师的知识点广泛且深入,尤其在面对四级考试时,需要掌握更为全面的专业技能。以下是对数据库工程师所需知识点的详细阐述: 1. 数据库基础理论: - 数据模型:理解并掌握三种主要的数据模型——关系型...

    Java使用组合模式实现表示公司组织结构功能示例

    知识点1:什么是组合模式? 组合模式是一种结构型设计模式,它将对象组合成树形结构以表示“部分一整体”的层次结构。这种模式使得用户对单个对象和组合对象的使用具有一致性。 知识点2:组合模式的优点 使用组合...

    ACM竞赛讲解知识点

    【ACM竞赛讲解知识点】 ACM(International Collegiate Programming Contest,国际大学生程序设计竞赛)是一项全球性的编程竞赛,旨在挑战参赛者在限定时间内解决复杂数学和算法问题的能力。以下是对压缩包文件中...

    JavaScript设计模式.pdf

    组合模式是将对象组合成树形结构,以表示部分整体的关系。它的主要作用是使客户端代码可以统一地处理单个对象和组合对象。 6. 门面模式(Facade Pattern): 门面模式是提供一个统一的接口来访问一个子系统的多个...

    事件树、故障树、决策树与贝叶斯网络

    接下来将详细阐述这些分析方法的知识点。 事件树分析(ETA)是一种逻辑演绎分析方法,它以某个初始事件为起点,探索此事件可能导致的事件序列及其结果。事件树能够帮助评估系统的可靠性和安全性,通过事件发生概率...

    Head First 设计模式学习笔记(十四)模式的组合使用

    2. **组合模式(Composite Pattern)**:Flock.java文件可能代表了组合模式的应用,该模式将对象组合成树形结构以表示部分-整体的层次关系。Flock类可能作为一个容器,持有多个Duck对象,实现了整体行为,如让整个鸭...

    Java设计模式刘伟书本中模拟考试答案

    组合模式的一个适用场景是,如果系统中需要处理的对象具有树形结构,并且客户代码需要对单个对象和复合对象(即包含其他对象的对象)进行一致的操作。 5. 观察者模式(Observer Pattern): 观察者模式定义了对象...

    软件开发方法与环境--设计模式(ppt)

    - 组合模式:允许你将对象组合成树形结构来表现“整体/部分”层次结构。 - 观察者模式:定义了对象之间的一对多依赖关系,当一个对象的状态改变时,所有依赖于它的对象都会得到通知并自动更新。 4. **设计模式的...

    c#模式基本知识

    9. 组合模式:组合模式将对象组合成树形结构以表示部分-整体的层次结构。它使得客户可以统一处理单个对象和组合对象,简化了处理复杂对象集合的逻辑。 10. 策略模式:策略模式定义了一系列的算法,并将每一个算法...

    小学一年级奥数知识点教学提纲.pdf

    六至十五的知识点未在提供的内容中展开,但可以推测这些章节可能包括速算技巧、数数与计数、自然数串的趣味问题、奇偶数的区分、分组与组式的概念、不等式与排序的理解,以及综合练习题,旨在巩固和应用前面所学的...

Global site tag (gtag.js) - Google Analytics