JaiswalTraining

Get the online training



Corejava Servlet Jsp  Php  Hibernate  Ajax Web Service   Ejb2.1 Ejb3.0 Struts Struts2  JPA Spring Ibatis   JSF    JSF2.0  CoreJavaDesignPattern    Jquery  Flex J2EE-Design-Patterns  Jboss7  Maven  Contact Me                                                                                                                                                                        
            IGNOU SMU PTU Project                                           Training                                                                                                                              
              

Contact Us  0091- 9210721663         jaiswaltraining@gmail.com




Corejava
Servlet
Jsp
Php
Hibernate
Ajax
Web Service
Ejb2.1
Ejb3.0
Struts  
Struts2
JPA
Spring
Ibatis
JSF
JSF2.0
CoreJavaDesignPattern
Jquery
Flex
J2EE-Design-Patterns
Jboss7
Maven







Composite design pattern:
Purpose
  • Compose objects into tree structures to represent part-whole hierarchies.
    Composite lets clients treat individual objects and compositions of objects uniformly.
Application
  • You want to represent part-whole hierarchies of objects. you want clients to be able to ignore the difference between compositions of objects and individual objects.
  •  Clients will treat all objects in the composite structure uniformly.
Examples of Composite
  • The Composite composes objects into tree structures and lets clients treat
    individual objects and compositions uniformly.
  •  Although the example is abstract, arithmetic expressions are Composites.
  •  An arithmetic expression consists of an operand, an operator (+ - * /), and another operand. The operand can be a number, or another arithmetic expresssion. Thus, 2 + 3 and
    (2 + 3) + (4 * 6) are both valid expressions.

Example:-

Employee.java
package manager_simple;

class Employee {
     String name;
     double salary;
     Employee(String n, double s){
         name = n;
         salary = s;
     }
     String getName() {
        return name;
     }
     double getSalary() {
        return salary;
     }
     public String toString() {
         return "Employee " + name;
     }
  }


Manager.java
package manager_simple;

class Manager {
     Manager mgr;
     Employee[] ely;
     String dept;
     Manager(Manager mgr,Employee[] e, String d ) {
         this(e, d);
         this.mgr = mgr;
     }
     
     Manager(Employee[] e, String d) {
         ely = e;
         dept =d;
     }
     String getDept() {
         return dept;
     }
     Manager getManager() {
         return mgr;
     }
     Employee[] getEmployee() {
         return ely;
     }
     public String toString() {
         return dept + " manager";
     }
  }

Test.java
package manager_simple;

class Test {
     public static void main(String[] args) {
         Employee[] e1 = {new Employee("Aaron"50),
                          new Employee("Betty"60)};
         Manager m1 = new Manager(e1, "Accounting");
         
         Employee[] e2 = {new Employee("Cathy"70),
                          new Employee("Dan"80),
                          new Employee("Eliz"90)};
        
         Manager m2 = new Manager(m1,e2, "Production");
         
         System.out.println(m2);
         Employee[] emp = m2.getEmployee();
         if (emp != null)
               for (int k = 0; k < emp.length; k++)
                    System.out.println(" "+emp[k]+" Salary: $"+
 emp
[k].getSalary());       
        
         Manager m = m2.getManager();
         System.out.println(" " + m);
         if (m!= null) {
            Employee[] emps = m.getEmployee();
            if (emps != null)
               for (int k = 0; k < emps.length; k++)
                     System.out.println("    " + emps[k]+" Salary:
$"
+ emps[k].getSalary());
          
         }   
     }
  }

Output:-



Download Zip code

Example:-

MenuComponent.java

package menu;

import java.util.*;

public abstract class MenuComponent {
   
  public void add(MenuComponent menuComponent) {
    throw new UnsupportedOperationException();
  }
  public void remove(MenuComponent menuComponent) {
    throw new UnsupportedOperationException();
  }
  public MenuComponent getChild(int i) {
    throw new UnsupportedOperationException();
  }
  
  public String getName() {
    throw new UnsupportedOperationException();
  }
  public String getDescription() {
    throw new UnsupportedOperationException();
  }
  public double getPrice() {
    throw new UnsupportedOperationException();
  }
  public boolean isVegetarian() {
    throw new UnsupportedOperationException();
  }
  
  public void print() {
    throw new UnsupportedOperationException();
  }
}

MenuItem.java
package menu;

import java.util.Iterator;
import java.util.ArrayList;

public class MenuItem extends MenuComponent {
  String name;
  String description;
  boolean vegetarian;
  double price;
    
  public MenuItem(String name, 
                  String description, 
                  boolean vegetarian, 
                  double price
  
    this.name = name;
    this.description = description;
    this.vegetarian = vegetarian;
    this.price = price;
  }
  
  public String getName() {
    return name;
  }
  
  public String getDescription() {
    return description;
  }
  
  public double getPrice() {
    return price;
  }
  
  public boolean isVegetarian() {
    return vegetarian;
  }
  
  public void print() {
    System.out.print("  " + getName());
    if (isVegetarian()) {
      System.out.print("(v)");
    }
    System.out.println(", " + getPrice());
    System.out.println("     -- " + getDescription());
  }
}

Menu.java
package menu;

import java.util.Iterator;
import java.util.ArrayList;

public class Menu extends MenuComponent {
  ArrayList menuComponents = new ArrayList();
  String name;
  String description;
  
  public Menu(String name, String description) {
    this.name = name;
    this.description = description;
  }
 
  public void add(MenuComponent menuComponent) {
    menuComponents.add(menuComponent);
  }
 
  public void remove(MenuComponent menuComponent) {
    menuComponents.remove(menuComponent);
  }
 
  public MenuComponent getChild(int i) {
    return (MenuComponent)menuComponents.get(i);
  }
 
  public String getName() {
    return name;
  }
 
  public String getDescription() {
    return description;
  }
 
  public void print() {
    System.out.print("\n" + getName());
    System.out.println(", " + getDescription());
    System.out.println("---------------------");
  
    Iterator iterator = menuComponents.iterator();
    while (iterator.hasNext()) {
      MenuComponent menuComponent = 
        (MenuComponent)iterator.next();
      menuComponent.print();
    }
  }
}

Waitress.java
package menu;

import java.util.Iterator;
  
public class Waitress {
  MenuComponent allMenus;
 
  public Waitress(MenuComponent allMenus) {
    this.allMenus = allMenus;
  }
 
  public void printMenu() {
    allMenus.print();
  }
}

MenuTestDrive.java
package menu;

import java.util.*;

public class MenuTestDrive {
  public static void main(String args[]) {
    MenuComponent pancakeHouseMenu = 
      new Menu("PANCAKE HOUSE MENU""Breakfast");
    MenuComponent dinerMenu = 
      new Menu("DINER MENU""Lunch");
    MenuComponent cafeMenu = 
      new Menu("CAFE MENU""Dinner");
    MenuComponent dessertMenu = 
      new Menu("DESSERT MENU""Dessert of course!");
    MenuComponent coffeeMenu = new Menu("COFFEE MENU",
 
"Stuff to go with your afternoon coffee");
  
    MenuComponent allMenus = new Menu("ALL MENUS",
 
"All menus combined");
  
    allMenus.add(pancakeHouseMenu);
    allMenus.add(dinerMenu);
    allMenus.add(cafeMenu);
  
    pancakeHouseMenu.add(new MenuItem(
      "K&B's Pancake Breakfast"
      "Pancakes with scrambled eggs, and toast"
      true,
      2.99));
    pancakeHouseMenu.add(new MenuItem(
      "Regular Pancake Breakfast"
      "Pancakes with fried eggs, sausage"
      false,
      2.99));
    pancakeHouseMenu.add(new MenuItem(
      "Blueberry Pancakes",
      "Pancakes made with fresh blueberries,
and blueberry syrup"
,
      true,
      3.49));
    pancakeHouseMenu.add(new MenuItem(
      "Waffles",
      "Waffles, with your choice of blueberries
 or strawberries"
,
      true,
      3.59));

    dinerMenu.add(new MenuItem(
      "Vegetarian BLT",
      "(Fakin') Bacon with lettuce & tomato
on whole wheat"

      true, 
      2.99));
    dinerMenu.add(new MenuItem(
      "BLT",
      "Bacon with lettuce & tomato on whole wheat"
      false, 
      2.99));
    dinerMenu.add(new MenuItem(
      "Soup of the day",
      "A bowl of the soup of the day, with a
side of potato salad"

      false, 
      3.29));
    dinerMenu.add(new MenuItem(
      "Hotdog",
      "A hot dog, with saurkraut, relish,
onions, topped with cheese"
,
      false, 
      3.05));
    dinerMenu.add(new MenuItem(
      "Steamed Veggies and Brown Rice",
      "Steamed vegetables over brown rice"
      true, 
      3.99));
 
    dinerMenu.add(new MenuItem(
      "Pasta",
      "Spaghetti with Marinara Sauce,
and a slice of sourdough bread"
,
      true, 
      3.89));
   
    dinerMenu.add(dessertMenu);
  
    dessertMenu.add(new MenuItem(
      "Apple Pie",
      "Apple pie with a flakey crust,
 topped with vanilla icecream"
,
      true,
      1.59));
  
    dessertMenu.add(new MenuItem(
      "Cheesecake",
      "Creamy New York cheesecake,
with a chocolate graham crust"
,
      true,
      1.99));
    dessertMenu.add(new MenuItem(
      "Sorbet",
      "A scoop of raspberry and a scoop of lime",
      true,
      1.89));

    cafeMenu.add(new MenuItem(
      "Veggie Burger and Air Fries",
      "Veggie burger on a whole wheat
 bun, lettuce, tomato, and fries"
,
      true, 
      3.99));
    cafeMenu.add(new MenuItem(
      "Soup of the day",
      "A cup of the soup of the day,
with a side salad"
,
      false, 
      3.69));
    cafeMenu.add(new MenuItem(
      "Burrito",
      "A large burrito, with whole pinto
 beans, salsa, guacamole"
,
      true, 
      4.29));

    cafeMenu.add(coffeeMenu);

    coffeeMenu.add(new MenuItem(
      "Coffee Cake",
      "Crumbly cake topped with cinnamon
 and walnuts"
,
      true,
      1.59));
    coffeeMenu.add(new MenuItem(
      "Bagel",
      "Flavors include sesame, poppyseed,
cinnamon raisin, pumpkin"
,
      false,
      0.69));
    coffeeMenu.add(new MenuItem(
      "Biscotti",
      "Three almond or hazelnut biscotti
 cookies"
,
      true,
      0.89));
 
    Waitress waitress = new Waitress(allMenus);
   
    waitress.printMenu();
  }
}

Output:


Download zip code