ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

OOģʽ-Composite(һ)
2015-07-20 17:29:22 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:11´Î
Tags£ºÄ£Ê½ -Composite

×éºÏģʽҲ½Ð×ö¡°²¿·Ö-ÕûÌ塱ģʽ£¬ÕâÑùÆäʵ¶¨ÒåÒ²¾ÍºÜÃ÷ÏÔÁË£¬ÕýºÃºÍÊý¾Ý½á¹¹µÄ֪ʶÏà¶ÔÓ¦£¬°Ñ¶ÔÏó×éºÏ³ÉÊ÷ÐνṹÒÔ±íʾ¡°²¿·Ö-ÕûÌ塱µÄ²ã´Î½á¹¹¡£

ÏÈ¿´Ààͼ£º

\

Ê×ÏÈ·ÖÎöÒ»ÏÂÕâ¸öÀàͼ£¬LeafºÍCompZ??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vc2l0ZcrHzayxsrXEo6y2vMrHvMyz0Li4wOBDb21wb25lbnSjrNPW0vLOqkNvbXBvbmVudNbQtObU2kxlYWbX08Dgo6zL+dLUy/u6zUNvbXBvbmVudLu5tObU2tfFvtu6z7nYz7U8L3A+CjxwPjxicj4KPC9wPgo8cD4gICAgIL7Z0ru49rrcs6O8+7XEwP3X06OsztLDx8zszOy21NfFtefE1KOsus2499bWzsS8/qOszsS8/rzQtPK9u7XAo6zV4rK7vs3Kx9K7uPa63LrDtdjX6brPxKPKvcLwo788L3A+CjxwPjxzdHJvbmc+wLS/tL+0wODNvKO6PC9zdHJvbmc+PC9wPgo8cD48aW1nIHNyYz0="https://www.cppentry.com/upload_files/article/49/1_iyppw__.png" alt="\">

À´¿´¿´¾ßÌåµÄʵÏÖ´úÂ룺

AbstractFileΪ×éºÏÖеĶÔÏóÉùÃ÷½Ó¿Ú£¬ÊµÏÖËùÓÐÀ๲ÓнӿڵÄĬÈÏÐÐΪ¡£

package composite;

import java.util.*;    //Ìí¼ÓÒýÓÃ

public abstract class AbstractFile {
	protected String name; // ¶¨Òåname×Ö¶Î

	public void printName() {
		System.out.println(name);
	}

	// ͨ³£¶¼ÓÃaddºÍremove·½·¨À´ÌṩÔö¼Ó»òÒÆ³ýÊ÷Ò¶»òÊ÷Ö¦µÄ¹¦ÄÜ
	public abstract boolean addChild(AbstractFile file); // Ôö¼Ó

	public abstract boolean removeChild(AbstractFile file); // ÒÆ³ý
	// Ò»¸ö¼¯ºÏ£¬´æ·ÅÕªÒªÎļþµÄ×ÓÎļþµÄ¶ÔÏó

	public abstract List
  
    getChildren();
}
  
FileΪ×ÓÀàÎļþ£¬¼Ì³Ð¸¸À࣬ҲÊÇÊ÷ÖÐËùνµÄÒ¶×ӽڵ㣬Ҷ×Ó½ÚµãÊÇûÓÐ×Ó½ÚµãµÄ£¬ËùÒÔ¸¸ÀàËùνµÄ·½·¨²¢²»ÄÜʵÏÖ£¬·µ»ØtrueºÍnull

package composite;

import java.util.*;

public class File extends AbstractFile {
	public File(String name) {
		this.name = name;
	}
//Îļþ²¢Ã»ÓÐÌí¼ÓµÄÄÜÁ¦£¬ËüÖ»ÊÇÒ»¸öµ¥¶ÀµÄ¸öÌå
	public boolean addChild(AbstractFile file) {
		return false;
	}
//¶ÔÓÚÎļþ±¾Éí£¬ÒѾ­ÊÇÒ¶×Ó½ÚµãÁË£¬ËùÒÔÒ²ÎÞɾ³ý×ÓÎļþµÄ¹¦ÄÜ
	public boolean removeChild(AbstractFile file) {
		return false;
	}

	// ÓÉÓÚFileÒѾ­ÊÇÒ¶×Ó½ÚµãÁË£¬ËùÒԾͲ»´æÔÚ¼¯ºÏÕâһ˵£¬ËùÒÔÕâ¸ö·½·¨·µ»ØµÄÊÇ¿ÕÖµ
	public List
  
    getChildren() {
		return null;
	}
}
  
FolderΪ×ÓÀàÎļþ¼Ð£¬Í¬ÑùÒ²¼Ì³ÐÓÚ¸¸À࣬µ«ÊÇ´ËÀàÖ»ÊÇÒ»¸öÆÕͨµÄ½Úµã£¬Àï±ßÒÀ¾É°üº¬Ò¶×ӽڵ㡣

package composite;

import java.util.*;

public class Folder extends AbstractFile {
	
	private List
  
    childList ;

	public Folder(String name) {
		this.name = name;
		//ÓÃÀ´½¨Á¢Ò»¸ö¼¯ºÏ±£´æ×ÓÎļþ
		this.childList = new ArrayList
   
    (); } //Ìí¼Ó×ÓÎļþ public boolean addChild(AbstractFile file) { return childList.add(file); } //ɾ³ý×ÓÎļþ public boolean removeChild(AbstractFile file) { return childList.remove(file); } // ×ÓÀàµÄ·µ»ØÀàÐÍÓ¦¸ÃºÍ¸¸ÀàµÄ¶¨Òå±£³ÖÒ»Ö public List
    
      getChildren() { return childList; } } 
    
   
  
×îºóÀ´¿´¿´¿Í»§¶ËÊÇÈçºÎµ÷ÓúʹòÓ¡µÄ

package composite;

import java.util.List;

public class Client {
	public static void main(String[] args) {
		// TODO ×Ô¶¯Éú³ÉµÄ·½·¨´æ¸ù
		// ¹¹ÔìÒ»¸öÊ÷ÐεÄÎļþ¡¢Ä¿Â¼½á¹¹
		AbstractFile rootFolder = new Folder("c:\\");
		AbstractFile compositeFolder = new Folder("composite");
		AbstractFile windowsFolder = new Folder("windows");
		AbstractFile file = new File("TestComposite.java");

		rootFolder.addChild(compositeFolder);
		rootFolder.addChild(windowsFolder);
		compositeFolder.addChild(file);
		// ´òӡĿ¼ÎļþÊ÷
		printTree(rootFolder);
	}

	private static void printTree(AbstractFile ifile) {
		ifile.printName();
		List
  
    children = ifile.getChildren();
		if (children == null)
			return;
		for (AbstractFile file : children) {
			printTree(file); // ´òÓ¡·½·¨µÄµ÷ÓÃ
		}
	}
}
  

͸Ã÷·½Ê½Ó밲ȫ·½Ê½

ÔÚFile×ÓÀàÖУ¬ËûËùνµÄ¸÷ÖÖ·½·¨¶¼ÊDz»ÊµÐе쬵«ÊÇÈ´ÒÀ¾É´æÔÚ£¬ÕâÖÖ·½Ê½¾Í½Ð×ö¡°Í¸Ã÷·½Ê½¡±£»ÕâÑù×öµÄºÃ´¦¾ÍÊÇÒ¶×Ó½ÚµãºÍÖ¦½Úµã¶ÔÓÚÍâ½çûÓÐÇø±ð£¬ËüÃǾ߱¸ÍêȫһÖµÄÐÐΪ½Ó¿Ú£»µ«ÊÇÎÊÌâÒ²»áºÜÃ÷ÏԵģ¬ÄǾÍÊÇÔÚFileÖÐÄÇЩËùνµÄ·½·¨µÄ´æÔÚÊǺÁÎÞÒâÒåµÄ£»

Èç¹û²»ÏëÈÃÆä×öÎÞÓù¦£¬Ò²¾ÍÊǰÑFile×ÓÀàÖеÄÎÞÒâÒåµÄ·½·¨¶¼È¥µô£¬ÕâÖÖ·½Ê½½Ð×ö¡°°²È«·½Ê½¡±£»µ«ÊÇÓÉÓÚÊDz»Í¸Ã÷µÄ£¬ËùÒÔËûÃǾͲ»ÄܾßÓÐÒ»ÖµĽӿÚÁË£¬ÕâÑù·´¶øÔö¼ÓÁËÆä¸´ÔÓÐÔ£¬¿Í»§¶ËµÄµ÷ÓÃÐèÒªÔÙÔö¼ÓÆäÏàÓ¦µÄÅжϡ£


ʲôʱºòʹÓÃ×éºÏģʽ£¿

1£©ÐèÇóÖÐÌåÏÖµÄÊÇ¡°²¿·Ö-ÕûÌ塱µÄ²ã´ÎµÄ½á¹¹Ê±£¬Ê¹ÓôËģʽ£»

2£©Óû§Ï£ÍûºöÂÔ×éºÏ¶ÔÏóÓëµ¥¸ö¶ÔÏóµÄ²»Í¬£¬Í³Ò»µØÊ¹ÓÃ×éºÏ½á¹¹ÖеÄËùÓеÄ

Ê×Ò³ ÉÏÒ»Ò³ 1 2 ÏÂÒ»Ò³ βҳ 1/2/2
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºzoj 3822 Domination ÏÂһƪ£ºPOJ2456 Aggressive cows(¶þ·Ö+̰..

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤Spring Boot Java£º (2025-12-26 16:20:19)
¡¤Spring Boot¤ÇHello (2025-12-26 16:20:15)
¡¤Spring ¤Î»ù±¾¤«¤éŒ (2025-12-26 16:20:12)
¡¤C++Ä£°å (template) (2025-12-26 15:49:49)
¡¤C ÓïÑÔÖÐÄ£°åµÄ¼¸ÖÖ (2025-12-26 15:49:47)