Design Pattern---combination mode

Source: Internet
Author: User

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

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.