Tasarım Deseni - Fabrika Deseni

Fabrika kalıbı, Java'da en çok kullanılan tasarım kalıplarından biridir. Bu desen türü, bir nesneyi yaratmanın en iyi yollarından birini sağladığından, bu tür bir tasarım deseni yaratımsal modele girer.

Fabrika modelinde, oluşturma mantığını müşteriye göstermeden nesne oluştururuz ve ortak bir arayüz kullanarak yeni oluşturulan nesneye başvururuz.

Uygulama

Biz oluşturmak için gidiyoruz Şekli arayüzü ve uygulama beton sınıfları Şekli arayüzü. Bir fabrika sınıfı ShapeFactory , sonraki adım olarak tanımlanır.

FactoryPatternDemo , demo sınıfımız bir Shape nesnesi almak için ShapeFactory kullanacaktır . İhtiyaç duyduğu nesne türünü elde etmek için bilgileri ( DAİRE / DİKDÖRTGEN / KARE ) ShapeFactory'ye iletecektir .

Aşama 1

Bir arayüz oluşturun.

Shape.java

public interface Shape {
   void draw();
}

Adım 2

Aynı arayüzü uygulayan somut sınıflar oluşturun.

Rectangle.java

public class Rectangle implements Shape {

   @Override
   public void draw() {
      System.out.println("Inside Rectangle::draw() method.");
   }
}

Square.java

public class Square implements Shape {

   @Override
   public void draw() {
      System.out.println("Inside Square::draw() method.");
   }
}

Circle.java

public class Circle implements Shape {

   @Override
   public void draw() {
      System.out.println("Inside Circle::draw() method.");
   }
}

Aşama 3

Verilen bilgilere dayanarak somut sınıf nesnesi oluşturmak için bir Fabrika oluşturun.

ShapeFactory.java

public class ShapeFactory {
	
   //use getShape method to get object of type shape 
   public Shape getShape(String shapeType){
      if(shapeType == null){
         return null;
      }		
      if(shapeType.equalsIgnoreCase("CIRCLE")){
         return new Circle();
         
      } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
         return new Rectangle();
         
      } else if(shapeType.equalsIgnoreCase("SQUARE")){
         return new Square();
      }
      
      return null;
   }
}

4. adım

Tür gibi bir bilgi ileterek somut sınıfın nesnesini elde etmek için Fabrikayı kullanın.

FactoryPatternDemo.java

public class FactoryPatternDemo {

   public static void main(String[] args) {
      ShapeFactory shapeFactory = new ShapeFactory();

      //get an object of Circle and call its draw method.
      Shape shape1 = shapeFactory.getShape("CIRCLE");

      //call draw method of Circle
      shape1.draw();

      //get an object of Rectangle and call its draw method.
      Shape shape2 = shapeFactory.getShape("RECTANGLE");

      //call draw method of Rectangle
      shape2.draw();

      //get an object of Square and call its draw method.
      Shape shape3 = shapeFactory.getShape("SQUARE");

      //call draw method of square
      shape3.draw();
   }
}

Adım 5

Çıkışı doğrulayın.

Inside Circle::draw() method.
Inside Rectangle::draw() method.
Inside Square::draw() method.