Iterator Pattern: provides a way to access the elements of an
aggregate object sequentially without exposing its underlying representation.
Example
Spare.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | package com.iteratorpattern.example; public class Spare { private String name; private String description; private float price; public Spare(String name, String description, float price) { this .name = name; this .description = description; this .price = price; } public String getName() { return name; } public String getDescription() { return description; } public float getPrice() { return price; } } |
BikeSpare.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | package com.iteratorpattern.example; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class BikeSpare implements SpareList { List<spare> spareList = new ArrayList<>(); public BikeSpare() { spareList.add( new Spare( "Head Light Assembly" , "Head Light holder and blub set" , 700 )); spareList.add( new Spare( "Piston" , "Piston with bearing" , 1500 )); spareList.add( new Spare( "Tyres" , "Front and back tyres" , 1200 )); } @Override public Iterator<spare> createIterator() { return new BikeSpareItearator(spareList); } } </spare></spare> |
CarSpare.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | package com.iteratorpattern.example; import java.util.Iterator; public class CarSpare implements SpareList { public final int MAXITEMS = 3 ; Spare[] spareItems = new Spare[MAXITEMS]; public int noofItems = 0 ; public CarSpare(){ addItem( new Spare( "Bumpers" , "Front and Rear Bumper Assembly" , 4000 )); addItem( new Spare( "CrankShaft" , "CrankShaft with bearings" , 2500 )); addItem( new Spare( "audio player" , "audio player with usb and aux connectivity" , 1000 )); } public void addItem(Spare spare){ if (noofItems >= MAXITEMS) { System.out.println( "can't add more spares" ); } else { spareItems[noofItems] = spare; noofItems++; } } public Iterator<spare> createIterator(){ return new CarSpareIterator(spareItems); } } </spare> |
TruckSpare.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | package com.iteratorpattern.example; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class TruckSpare implements SpareList { Map<string,spare> spareList = new HashMap<>(); public TruckSpare() { String name = "Front Grill" ; spareList.put(name, new Spare(name, "Front Grill Assembly" , 3000 )); name = "Horn Assembly" ; spareList.put(name, new Spare(name, "Horn with Holders Assembly" , 1500 )); name = "Seat Covers" ; spareList.put(name, new Spare(name, "set of seat covers" , 1200 )); } @Override public Iterator<spare> createIterator() { return spareList.values().iterator(); } } </spare></string,spare> |
SpareList.java
1 2 3 4 5 6 7 | package com.iteratorpattern.example; import java.util.Iterator; public interface SpareList { public Iterator<spare> createIterator(); } </spare> |
BikeSpareItearator.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | package com.iteratorpattern.example; import java.util.Iterator; import java.util.List; public class BikeSpareItearator implements Iterator<spare> { List<spare> sparesList; int position; public BikeSpareItearator(List<spare> sparesList) { this .sparesList = sparesList; } @Override public boolean hasNext() { if (position>=sparesList.size()){ return false ; } else { return true ; } } @Override public Spare next() { Spare spareItem = sparesList.get(position); position++; return spareItem; } } </spare></spare></spare> |
CarSpareItearator.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | package com.iteratorpattern.example; import java.util.Iterator; public class CarSpareIterator implements Iterator<spare> { Spare[] spareItems; int position; public CarSpareIterator(Spare[] spareItems) { this .spareItems = spareItems; } @Override public boolean hasNext() { if (position>=spareItems.length||spareItems[position]== null ){ return false ; } else { return true ; } } @Override public Spare next() { Spare spareItem = spareItems[position]; position++; return spareItem; } } </spare> |
Dealer.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | package com.iteratorpattern.example; import java.util.Iterator; import java.util.List; public class Dealer { private List<sparelist> spareList; public Dealer(List<sparelist> spareList) { this .spareList = spareList; } public void listMenu(){ for (SpareList spare : spareList) { listMenu(spare.createIterator()); } } public void listMenu(Iterator<spare> iterator){ while (iterator.hasNext()) { Spare spare = (Spare) iterator.next(); System.out.format( "Item Name %s with Description %s is of price %.2f \n" , spare.getName(), spare.getDescription(), spare.getPrice()); } } } </spare></sparelist></sparelist> |
GarageTestDrive.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | package com.iteratorpattern.example; import java.util.ArrayList; import java.util.List; public class GarageTestDrive { public static void main(String[] args) { List<sparelist> spareList = new ArrayList<>(); spareList.add( new BikeSpare()); spareList.add( new CarSpare()); spareList.add( new TruckSpare()); Dealer dealer = new Dealer(spareList); dealer.listMenu(); } } </sparelist> |
Home
No comments:
Post a Comment