본문 바로가기

개발 서적 정리

[디자인 패턴의 아름다움] 2장. 객체지향 프로그래밍 패러다임

 

책을 보고 정리하고 싶은 내용을 작성하는것이니

이해되지 않는 부분이 있을 수 있어요.

참고 부탁드립니다.

 

 

1. 캡슐화

- 접근 가능한 인터페이스를 제한하는 것

- 클래스가 제공하는 메서드를 통해서만 내부 정보나 데이터에 대한 외부 접근을 허가 하는 것을 의미한다.

- 과도한 유연성은 제어할 수 없음을 의미하고 속성이 여러 가지 이상한 방식으로 수정될 수 있으며 수정 논리가 코드의 모든 구석에 흩어져

   코드의 가독성과 유지 관리 용이성에 영향을 줄 수 있다.

- 속성을 캡슐화하고 몇 가지 필요한 메서드만 노출하면 모든 비즈니스 세부 정보를 완벽하게 이해하지 않아도 잘못 사용할 가능성이

   크게 줄어들 수 있다.

2. 추상화

- 메서드의 내부 구현을 숨기는 것

- 구현이 아닌 기능에만 초점을 맞춘 설계 사상인 추상화는 뇌가 불필요한 많은 정보를 걸러내는 데 도움이 된다.

- 메서드의 이름을 지을때는 보다 추상적인 이름을 사용하는 것이 좋다. getNaverCloudPictureUrl(X) / getPictureUrl(O)

 

3. 상속

- 상속의 가장 큰 역할은 코드의 재사용

- 과도하게 사용할 경우 즉, 상속 계층 구조가 너무 깊고 복잡하면 코드의 가독성과 유지 관리성이 떨어진다.

 

4. 다형성

- 다형성을 통해 서로 다른 클래스 또는 구조체가 동일한 인터페이스를 공유할 수 있으며, 이를 통해 유연하고 재사용 가능한 코드를

   작성할 수 있다. (Swift에서 다형성은 주로 프로토콜과 상속을 통해 구현)