# data[].attributes.body
- composite
- whole-part

# data[].attributes.body
- Darstellung von Teil-Ganzes-Hierarchien
- Verbergen der Unterschiede zwischen einzelnen und zusammengesetzten Objekten

# data[].attributes.body
- Entwurfsmuster aus der Gruppe der Strukturmuster
- von GoF klassifiziert worden

# data[].attributes.body
http://tpcg.io/huZE1ekk

# data[].attributes.body
All Mails:
mum@mail.com
dad@mail.com
yunus@mail.com
yusuf@mail.com
Family:
mum@mail.com
dad@mail.com
Friends:
yunus@mail.com
yusuf@mail.com

# data[].attributes.body
1. geringere Anzahl von Objekten --> verringert die Speichernutzung --> verhindert, dass Speicherfehler  (java.lang.OutOfMemoryError).

2. gemeinsame Nutzung von Objekten --> verringerte Ausführungszeit

# data[].attributes.body
import java.util.ArrayList;
import java.util.List;

interface Email
{
    void getEmailAddress();
}

class FamilyMember implements Email
{
    private String eMailAddress;

    public FamilyMember(String eMailAddress)
    {
        this.eMailAddress= eMailAddress;
    }

    @Override
    public void getEmailAddress()
    {
        System.out.println(this.eMailAddress);
    }
}

class Friend implements Email
{
    private String eMailAddress;

    public Friend(String eMailAddress)
    {
        this.eMailAddress= eMailAddress;
    }

    @Override
    public void getEmailAddress()
    {
        System.out.println(this.eMailAddress);
    }
}


class MailingList implements Email {
    private List<Email> listOfEmailAdresses = new ArrayList<Email>();

    @Override
    public void getEmailAddress()
    {
        for(Email email:listOfEmailAdresses)
        {
            email.getEmailAddress();
        }
    }

    public void addEmail(Email email)
    {
        listOfEmailAdresses.add(email);
    }

    public void removeEmail(Email email)
    {
        listOfEmailAdresses.remove(email);
    }

    public Email getChild(int i)
    {
        return listOfEmailAdresses.get(i);
    }

}


public class Company
{
    public static void main (String[] args)
    {
        FamilyMember mum = new FamilyMember ("mum@mail.com");
        FamilyMember dad= new FamilyMember ("dad@mail.com");
        MailingList  family = new MailingList();
        family .addEmail(mum);
        family .addEmail(dad);


        Friend  yunus = new Friend("yunus@mail.com");
        Friend yusuf = new Friend("yusuf@mail.com");
        MailingList  friends= new MailingList ();
        friends.addEmail(yunus);
        friends.addEmail(yusuf);

        MailingList  allMails= new MailingList  ();
        allMails.addEmail(family);
        allMails.addEmail(friends);
        System.out.println("All Mails: ");
        allMails.getEmailAddress();
        System.out.println("Family: ");
        allMails.getChild(0).getEmailAddress();
        System.out.println("Friends: ");
        allMails.getChild(1).getEmailAddress();
    }
}

# data[].attributes.body
Der Unterschied zwischen der Kompositum von Objekten und einzelnen Objekten kann ignoriert werden

indem Sie mehrere Objekte auf die gleiche Weise verwenden und häufig fast identischen Code für jede dieser Objekte haben