JAVA - 페어프로그래밍 후기

모모는무지개·2024년 4월 29일

개선해서 좋았던 점

코드 리팩토링을 통해 결합도는 낮추고 응집도는 높이는 과정을 직접 경험해보니 재밌었다. 디자인 패턴의 이론에 대해서 대략적으로는 알고 있었지만 실제로 디자인 패턴에 맞춰서 개발을 해본 경험은 많이 없어서 이번 경험이 나중에 취업후 실무에서도 많은 도움이 될 것 같다.

앞으로 개선 할점

이번 경험에서는 싱글턴 패턴으로만 코드를 작성해 보았는데, 싱글턴 패턴이 물론 장점도 있지만 아래와 같은 단점도 있다는 것을 알았다. 다음번에는 이를 개선할 수 있는 팩토리, 빌드, 등 여러 디자인 패턴으로 코드를 작성해보고 싶다.

장점

  • 클래스가 하나의 인스턴트만 갖는다는 것을 확신할 수 있습니다.
  • 이 인스턴스에 대한 전역 접근 지점을 얻습니다.
  • 싱글턴 객체는 처음 요청될 때만 초기화됩니다.

단점

  • 단일 책임 원칙을 위반합니다. 이 패턴은 한 번에 두 가지의 문제를 동시에 해결합니다.
  • 또 싱글턴 패턴은 잘못된 디자인​(예를 들어 프로그램의 컴포넌트들이 서로에 대해 너무 많이 알고 있는 경우)​을 가릴 수 있습니다.
  • 그리고 이 패턴은 다중 스레드 환경에서 여러 스레드가 싱글턴 객체를 여러 번 생성하지 않도록 특별한 처리가 필요합니다.
  • 싱글턴의 클라이언트 코드를 유닛 테스트하기 어려울 수 있습니다. 그 이유는 많은 테스트 프레임워크들이 모의 객체들을 생성할 때 상속에 의존하기 때문입니다.
    싱글턴 클래스의 생성자는 비공개이고 대부분 언어에서 정적 메서드를 오버라이딩하는 것이 불가능하므로 싱글턴의 한계를 극복할 수 있는 창의적인 방법을 생각해야 합니다. 아니면 그냥 테스트를 작성하지 말거나 싱글턴 패턴을 사용하지 않으면 됩니다.
profile
안녕하세요 하하하

0개의 댓글