디자인 패턴/생성

원형(prototype) 패턴

sdafdq 2022. 10. 16. 23:19

원형 패턴은 일종의 식당 메뉴와 같다.

 

미리 정해진 틀 대로 음식을 만들어 놓고, 손님이 주문하면 그 음식을 주는거다.

 

프로토타입 객체가 어떠한 객체들에 대한 원형을 가지고 있다가, 요청시 그 객체를 복사하여 주는 것이다.

 

class MazePrototypeFactory extends MazeFactory {

public Maze MakeMaze();
    public Maze MakeRoom(int roomNum);
    public Maze MakeWall();
    public Maze MakeDoor(Room room1, Room room2);
    
    private Maze prototypeMaze;
    private Maze prototypeRoom;
    private Maze prototypeWall;
    private Maze prototypeDoor;
}


//함수의 구현부는 
public Maze MakeMaze(){
	return prototypeMaze.clone();    //clone()은 복사해주는 함수
}

생성자의 경우,

 

MazePrototypeFactory(Maze maze, Wall wall, Room room, Door door){
    prototypeMaze = maze;
    prototypeRoom = room;
    prototypeWall = wall;
    prototypeDoor = door;
}

 

door같은 경우 방과 방 사이를 연결해주는 추가적인 함수를 만들면 된다.

class Door extends MapSite{
    Door();
    
public:
    Door Clone();  //return new Door(this);
    void Initialize(Room room1, Room room2); //방과 방 사이 연결 그냥 인자 받고 아래 room과 연결
    void Enter();
    Room otherSideFrom(Room room);
    
private:
    Room room1;
    Room room2;
}

 

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

싱글톤  (0) 2022.11.11
팩토리 메서드  (0) 2022.10.14
빌더 패턴  (0) 2022.10.12
추상 팩토리  (0) 2022.10.07