pattern2018. 7. 17. 17:31

Topic:


-객체 생성 로직을 client로 부터 감춘채, common interface를 통하여 새로생성된 객체를 참조한다.

public interface Shape {
    void draw();
}

public class ShapeFactory {
    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;
    }
}
public class Circle implements Shape {

    private final String TAG = Circle.class.getSimpleName();
    @Override
    public void draw() {
        Log.d(TAG, "Circle draw");
    }
}

public class Rectangle implements Shape {
    private final String TAG = Rectangle.class.getSimpleName();
    @Override
    public void draw() {
        Log.d(TAG, "Rectangle draw");
    }
}

public class Square implements Shape {
    private final String TAG = Square.class.getSimpleName();
    @Override
    public void draw() {
        Log.d(TAG, "Square draw");
    }
}


결과 :


-application(client)가 Factory객체를 통해 객체를 간접적으로 획득, interface를 활용한 method 호출

	ShapeFactory shapeFactory= new ShapeFactory();
	Shape a =shapeFactory.getShape("circle");
	a.draw();
	a=shapeFactory.getShape("rectangle");
	a.draw();
	a=shapeFactory.getShape("square");
	a.draw();


07-17 17:18:40.666 22057 22057 D Circle  : Circle draw

07-17 17:18:40.667 22057 22057 D Rectangle: Rectangle draw

07-17 17:18:40.667 22057 22057 D Square  : Square draw



출처 : 

https://www.tutorialspoint.com//design_pattern/design_pattern_quick_guide.htm


'pattern' 카테고리의 다른 글

Prototype pattern  (0) 2018.07.18
Builder pattern  (0) 2018.07.18
Singleton pattern  (0) 2018.07.18
Abstract Factory Pattern  (0) 2018.07.18
Type of Design Pattern  (0) 2018.07.17
Posted by easy16