실무에서 Cloneable을 구현한 클래스는 clone 메서드를 public으로 제공하며, 사용자는 당연히 복제가 제대로 이뤄지리라 기대한다.

새로운 인터페이스를 만들 때는 절대 Clonable을 확장해서는 안 되며 새로운 클래스도 이를 구현해서는 안 된다.

기본 원칙은 ‘복제 기능은 생성자와 팩터리를 이용하는 게 최고’ 라는 것이다. (단, 배열만은 clone 메서드 방식이 가장 깔끔한, 이 규칙의 합당한 예외라 할 수 있다.)