The combination pattern can be understood as a way to construct a tree's structure.
Composite is a branch of a tree that can be expanded, and the tree can theoretically be infinitely long.
PackageCom.jayfulmath.designpattern.composite; Public Abstract classCompany {protectedString name; PublicCompany (String name) { This. Name =name; } Public Abstract voidAdd (company C); Public Abstract voidRemove (company C); Public Abstract voidDisplay (intdepth); Public Abstract voidlineofduty (); protected voidPrintfobjectname (intdepth) {StringBuilder Builder=NewStringBuilder (); for(inti=0;i<depth;i++) {builder.append ("-"); } System.out.println (Builder.tostring ()+name); }}
PackageCom.jayfulmath.designpattern.composite; Public classFiancedepartmentextendsCompany { Publicfiancedepartment (String name) {Super(name); //TODO auto-generated Constructor stub} @Override Public voidAdd (Company C) {//TODO auto-generated Method Stub} @Override Public voidRemove (Company C) {//TODO auto-generated Method Stub} @Override Public voidDisplay (intdepth) { //TODO auto-generated Method Stubprintfobjectname (depth); } @Override Public voidlineofduty () {//TODO auto-generated Method StubSystem.out.println (name+ "\ T staff payoff"); }}
PackageCom.jayfulmath.designpattern.composite; Public classHrdepartmentextendsCompany { Publichrdepartment (String name) {Super(name); //TODO auto-generated Constructor stub} @Override Public voidAdd (Company C) {//TODO auto-generated Method Stub} @Override Public voidRemove (Company C) {//TODO auto-generated Method Stub} @Override Public voidDisplay (intdepth) { //TODO auto-generated Method Stubprintfobjectname (depth); } @Override Public voidlineofduty () {//TODO auto-generated Method StubSystem.out.println (name+ "\ t Staff recruitment"); }}
PackageCom.jayfulmath.designpattern.composite;Importcom.jayfulmath.designpattern.main.BasicExample; Public classCompositemainextendsbasicexample {@Override Public voidStartdemo () {//TODO auto-generated Method StubCompositecompany root =NewCompositecompany ("Beijing head Office")); Root. ADD (NewHrdepartment ("head Office HR"))); Root. ADD (NewFiancedepartment ("head Office FD")); Compositecompany Comp=NewCompositecompany ("Shanghai Branch")); Comp. ADD (NewHrdepartment ("Shanghai branch HR"))); Comp. ADD (NewFiancedepartment ("Shanghai branch FD")); Root. ADD (comp); Compositecompany COMP1=NewCompositecompany ("Pudong Office")); Comp1. ADD (NewHrdepartment ("Pudong Office hr"))); Comp1. ADD (NewFiancedepartment ("Pudong Office FD")); Comp. ADD (COMP1); Compositecompany COMP2=NewCompositecompany ("People's Square Office"); Comp2. ADD (NewHrdepartment ("People's Square office hr")); Comp2. ADD (NewFiancedepartment ("People's Square office FD")); Comp. ADD (COMP2); System.out.println ("Structure diagram:"); Root. Display (1); System.out.println ("Duty:"); Root. Lineofduty (); }}
PackageCom.jayfulmath.designpattern.composite;Importcom.jayfulmath.designpattern.main.BasicExample; Public classCompositemainextendsbasicexample {@Override Public voidStartdemo () {//TODO auto-generated Method StubCompositecompany root =NewCompositecompany ("Beijing head Office")); Root. ADD (NewHrdepartment ("head Office HR"))); Root. ADD (NewFiancedepartment ("head Office FD")); Compositecompany Comp=NewCompositecompany ("Shanghai Branch")); Comp. ADD (NewHrdepartment ("Shanghai branch HR"))); Comp. ADD (NewFiancedepartment ("Shanghai branch FD")); Root. ADD (comp); Compositecompany COMP1=NewCompositecompany ("Pudong Office")); Comp1. ADD (NewHrdepartment ("Pudong Office hr"))); Comp1. ADD (NewFiancedepartment ("Pudong Office FD")); Comp. ADD (COMP1); Compositecompany COMP2=NewCompositecompany ("People's Square Office"); Comp2. ADD (NewHrdepartment ("People's Square office hr")); Comp2. ADD (NewFiancedepartment ("People's Square office FD")); Comp. ADD (COMP2); System.out.println ("Structure diagram:"); Root. Display (1); System.out.println ("Duty:"); Root. Lineofduty (); }}
Operation Result:
structure:- Beijing head Office--- head office HR--- Corporation FD--- Shanghai Branch----- Shanghai Branch HR----- Shanghai Branch FD----- Pudong Office------- Pudong Office hr------- Pudong Office FD-----People's square office ------- People's square office hr-------People's Square office FD Responsibilities: Head Office HR staff Recruitment Corporation FD staff payoff Shanghai Branch HR Staff recruitment Shanghai Branch FD staff Payoff Pudong Office HR staff Recruitment Pudong Office FD staff Payoff People's square office hr Staff recruitment People's Square office FD staff Payoff
The Leaf does not have the add and remove functions, but preserving the two interfaces can be a code-keeping consistency.
Design mode---Combined mode