PackageCom.bjsxt.composite;/*** Abstract Components *@authorAdministrator **/ Public InterfaceComponent {voidoperation ();}//Leaf ComponentsInterfaceLeafextendsComponent {}//Container ComponentsInterfaceCompositeextendsComponent {voidAdd (Component c); voidRemove (Component c); Component Getchild (intindex);}
Component Abstract Components
PackageCom.bjsxt.composite;Importjava.util.ArrayList;Importjava.util.List;//Abstract Construction Public InterfaceAbstractfile {voidKillvirus ();//Antivirus}classImageFileImplementsAbstractfile {PrivateString name; PublicImageFile (String name) {Super(); This. Name =name; } @Override Public voidKillvirus () {System.out.println ("---image file:" +name+ ", for Avira! "); } }classTextfileImplementsAbstractfile {PrivateString name; Publictextfile (String name) {Super(); This. Name =name; } @Override Public voidKillvirus () {System.out.println ("---text file:" +name+ ", for Avira! "); }}classVideofileImplementsAbstractfile {PrivateString name; Publicvideofile (String name) {Super(); This. Name =name; } @Override Public voidKillvirus () {System.out.println ("---video file:" +name+ ", for Avira! "); }}classFolderImplementsAbstractfile {PrivateString name; //defines a container to hold sub-nodes under the construction of this container Privatelist<abstractfile> list =NewArraylist<abstractfile>(); PublicFolder (String name) {Super(); This. Name =name; } Public voidAdd (abstractfile file) {list.add (file); } Public voidRemove (abstractfile file) {list.remove (file); } PublicAbstractfile Getchild (intindex) { returnList.get (index); } @Override Public voidKillvirus () {System.out.println ("---folder:" +name+ ", for Avira"); for(Abstractfile file:list) {File.killvirus (); } } }
Abstractfile Example
PackageCom.bjsxt.composite; Public classClient { Public Static voidMain (string[] args) {abstractfile f2,f3,f4,f5; Folder F1=NewFolder ("My Favorites"); F2=NewImageFile ("Old high head like. jpg"); F3=NewTextfile ("Hello.txt"); F1.add (F2); F1.add (F3); Folder F11=NewFolder ("movie"); F4=NewVideofile ("The laughter is proud of the lake" AVI.); F5=NewVideofile ("The Statue of God, avi."); F11.add (F4); F11.add (F5); F1.add (F11); //F2.killvirus ();F1.killvirus (); }}
Client Test Class
The combination mode of design pattern in Java23