빌더처럼 Point를 생성하는 함수들을 별도의 클래스에 넣어서 이를 Factory라고 부른다.
Builder: 정보가 합쳐진 최종 객체를 반환
Factory: 전체를 위한 하위 객체를 바로 리턴
빌더는 최종 결과물을 바로 리턴해 주며, 팩토리는 최종 결과물에 필요한 객체를 리턴한다.
생성자를 private에 선언해 사용자가 직접 생성자를 호출하지 못하도록 한다.(필수는 아님)
Point에서 PointFactory 클래스를 friend로 선언해서 생성자에 접근 가능하도록 한다.