728x90
반응형
Prototype Pattern
- 인스턴스를 복사하여 새로운 객체를 만드는 패턴이다.
- 인스턴스 생산 비용이 높을때 사용한다.
- 클래스로부터 인스턴스 생성이 어려울때 사용한다.
- 복사 붙여넣기 기능을 생각하면 이해하기 쉬울것 같다.
Prototype Pattern 구조
Prototype Pattern 구현
Shap class
- Cloneable 은 기본적으로 제공되는 인터페이스이다.
package patterns.prototype;
public class Shape implements Cloneable {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
Circle class
- copy 함수에서 실제 clone 을 호출 하여 객체를 복사후 리턴해준다.
package patterns.prototype;
public class Circle extends Shape {
private int x, y, r;
public Circle(int x, int y, int r) {
this.x = x;
this.y = y;
this.r = r;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getR() {
return r;
}
public void setR(int r) {
this.r = r;
}
public Circle copy () throws CloneNotSupportedException {
Circle circle = (Circle)clone();
return circle;
}
}
Main Class
package patterns.prototype;
public class Main {
public static void main(String[] args) throws CloneNotSupportedException {
Circle circle1 = new Circle(10, 20,8);
Circle circle2 = circle1.copy();
System.out.println("circle1.X" + circle1.getX());
System.out.println("circle2.X" + circle2.getX());
}
}
결과
카피를 circle1 에 값을 넣어 준 뒤 copy를 통해 객체를 복사하였다.
circle1.X10
circle2.X10
728x90
반응형
'Design pattern > GoF(인강편)' 카테고리의 다른 글
[Design Pattern] Abstract Factory Pattern (0) | 2021.11.29 |
---|---|
[Design Pattern] Builder Pattern (0) | 2021.11.24 |
[Design Pattern] Singleton Pattern (0) | 2021.11.24 |
[Design Pattern] Factory Method Pattern (0) | 2021.11.24 |
[Design Pattern] Template Method Pattern (0) | 2021.11.10 |
댓글