객체지향

팝콘·2023년 7월 5일

Java

목록 보기
14/17

V2

  • 객체의 모듈화가 강하지 않고 밀접하게 연결이 되어있다. 이런 경우 작은 변화가 생기면 연결이 되어있는 객체도 변경해야 하는 수고가 생긴다. 이는 좋은 객체지향 프로그래밍이 아니다.

  • 객체간의 의존성은 강하지만 객체의 역할이 분명하지 않다고 느껴진다.

  • CahierV2 cashier = new CashierV2( ); 는 orderProcess( ) 메서드 내부에 정의되어 있기 때문에 메서드가 호출될 때마다 객체가 생성된다.
  • 이는 주문을 받을 때마다 직원이 바뀌는 것과 비슷하다.
  • V2 방식의 장점은 없는 것 같다.

V3

  • 여전히 객체간의 의존성이 강하다. 객체는 섬이 아니라 협력하는 존재지만 결합도가 필요이상으로 강한 객체는 가변적인 상황에 제대로 대처하지 못한다.

  • V2에 비해 캡슐화를 구현함으로써 접근제어자를 적극 활용하고 외부로부터 속성을 보호하는 코드가 눈에 보인다.

  • Setter 메서드를 없애고 대신 생성자를 사용함으로써 속성의 변경을 방지한다.

  • CashierV3 클래스와 MenuV3 클래스를 orderProcess( ) 메서드 밖으로 빼고 private 접근제어자를 정의해줌으로써 객체를 보호하고 불필요한 객체 생성을 방지한다.

V4

  • V3에 비해 객체의 역할이 분명해지고 그로인해 의존성 또한 약해진 것을 확인할 수 있다.
  • 인터페이스를 이용하여 객체지향의 주요 특징인 다형성을 활용하는 것을 볼 수 있다.
  • 인터페이스를 이용한다는 것은 OCP(개방폐쇄원칙) 또한 지켜진다는 의미이다.
  • 객체지향적인 면에서는 좋은 좋은 코드지만 V3에 비해 클래스가 많다는 점에서 보면 초기 세팅이 조금 번거롭다는 단점이 있다.
profile
터짐

0개의 댓글