'디자인패턴'에 해당되는 글 2건

  1. 2013.05.06 Creational pattern - Factory
  2. 2013.05.06 Creational pattern - singleton

Shape.java
public interface Shape { 
    void draw(); 
}


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."); 
    }
 }

ShapeFactory.java
public class ShapeFactory { 

    //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; 
    } 
}

Demo.java

public class Demo { 

    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 circle 
        shape3.draw();
    }        
}
Output

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

'디자인패턴' 카테고리의 다른 글

Creational pattern - singleton  (0) 2013.05.06
Posted by iRang1101
,

하나의 인스턴스로 사용하는 패턴. 

글로벌 포이트로 접근이 필요한 경우에만 사용한다. 



public class Singleton { 
    private static volatile Singleton instance = null; 
    
    private Singleton() { }
    
    public static Singleton getInstance() { 
        if ( instance == null ) { 
            synchronized ( Sigleton.class) { 
                if ( instance == null ) {
                    instance = new Singleton() ; 
                } 
            }
        }
        return instance ;
    }
}

'디자인패턴' 카테고리의 다른 글

Creational pattern - Factory  (0) 2013.05.06
Posted by iRang1101
,