title: Abstract Factory Design Pattern use
body: <p>I am trying to learn creational design patterns, and i think i understand Factory Method pattern now.
  But on moving to Abstract Factory Pattern, I couldn't find its use. I know i miss something with this, but no idea where.</p>
  
  <p>In Abstract Factory Pattern we will have a an Abstract Factory, and Concrete Factories wil return the instance. Suppose we are dealing with creation of Cars. We will have an Abstract Factory like </p>
  
  <pre><code>public interface CarFactory{
      public Car getCar();
  }
  </code></pre>
  
  <p>And our concrete Factories will be something like </p>
  
  <pre><code>public class AudiFactory{
      public Car getCar(){
          return new Audi();
      }
  }
  
  public class VolvoFactory{
      public Car getCar(){
          return new Volvo();
      }
  }
  </code></pre>
  
  <p>And in user class we will use it like</p>
  
  <pre><code>CarFactory factory = new AudiFactory();
  Car carAudi = factory.getCar();
  factory = new VolvoFactory();
  Car carVolvo = factory.getCar();
  </code></pre>
  
  <p>I think we can build the same functionality using Factory Pattern too</p>
  
  <pre><code>public class CarFactory{
  
      public Car getCar(String make){
      if("Audi".equals(make))
          return new Audi();
      else if("Volvo".equals(make))
          return new Volvo();
      }
  }
  </code></pre>
  
  <p>And in user class we can </p>
  
  <pre><code>CarFactory factory = new CarFactory();
  Car carAudi = factory.getCar("Audi");
  Car carVolvo = factory.getCar("Volvo");
  </code></pre>
  
  <p>If my understanding is correct(please correct me if its wrong), Why we need another design pattern for this?</p>