Friday, May 19, 2017

Iterator Design Pattern

Definition:
       Iterator pattern falls under behavioural pattern category.
       In object-oriented programming, the iterator pattern is a design pattern in which an iterator is used to traverse a container and access the container's elements.
       This pattern is used to get a way to access the elements of a collection object in sequential manner without any need to know its underlying representation.
       What Iterator patterns is NOT? -  repeat task / solving solution

Purpose:
       Easy access to elements of container.
       Avoid data tampering at client side
       Perform simultaneous Iterators

Why Iterator Pattern (Problem statement):
       Consider an application used to print the details of a bank (its name and its manager name). For now only 3 banks details are known, and this is how it prints.

        Display(bank1.BankName);
     Display(bank1.Locatioin);
     Display(bank2.BankName);
     Display(bank2.Location);

       Let’s say now 100 bank details are known, now the complexity arises, as the application will now need to print all the 100 bank details one by one.
       To overcome the above issue, we can use the Iterator pattern.

Implementation:

       Step 1: Store all the objects ( all bank details ) in a container (list).
                private ArrayList m_ArrBank = new ArrayList();
                 m_ArrBank .Add(new Bank("ABC", “Location1"));
                 m_ArrBank .Add(new Bank("XYZ", " Location2"));
                 m_ArrBank .Add(new Bank("TUV", "Location3”));

       Step2: Access all the elements of the list by using an Iterator ( i.e. by using foreach)
                 foreach (Bank item in m_ArrBank )  // Iterator
                 {
                      Display(item.Location);
                      Display(item.BankName);
                 }

UML :



Example in C# :


Examples of Iterator :

  C++
        Template Library Containers implement their iterators
        Template Library algorithm are defines in terms iterator
  C#
        IEnumerable and IEnumurator are used
  Java
        SDK defines iterator interface
        Collections implement their iterators
  SQL
        Cursor is an iterator.
  TV Remote control

Types of Iterator :

       Internal Iterator
       External Iterator
       Single Integral Iterator
       Multiple Integral Iterator

No comments:

Post a Comment