본문 바로가기

추상화

[디자인 패턴의 아름다움] 2장. 객체지향 프로그래밍 패러다임 책을 보고 정리하고 싶은 내용을 작성하는것이니 이해되지 않는 부분이 있을 수 있어요. 참고 부탁드립니다. 1. 캡슐화 - 접근 가능한 인터페이스를 제한하는 것 - 클래스가 제공하는 메서드를 통해서만 내부 정보나 데이터에 대한 외부 접근을 허가 하는 것을 의미한다. - 과도한 유연성은 제어할 수 없음을 의미하고 속성이 여러 가지 이상한 방식으로 수정될 수 있으며 수정 논리가 코드의 모든 구석에 흩어져 코드의 가독성과 유지 관리 용이성에 영향을 줄 수 있다. - 속성을 캡슐화하고 몇 가지 필요한 메서드만 노출하면 모든 비즈니스 세부 정보를 완벽하게 이해하지 않아도 잘못 사용할 가능성이 크게 줄어들 수 있다. 2. 추상화 - 메서드의 내부 구현을 숨기는 것 - 구현이 아닌 기능에만 초점을 맞춘 설계 사상인 추.. 더보기
[Combine] eraseToAnyPublisher 는 무엇이고 어떻게 사용하는걸까? Combine 프레임워크에서 제공하는 eraseToAnyPublisher 가 무엇이고 어떻게 사용하는건지 알아보도록 하겠습니다. 공식문서를 살펴보면 type eraser 를 사용하여 publisher 를 래핑한다고 정의되어 있네요. 그렇다면 type eraser 는 뭘까요? type eraser 는 publisher 유형을 지우고 더 일반적인 형태로 변환하는 프로세스를 가르키는 용어라 생각할 수 있습니다. eraseToAnyPublisher() 를 사용함으로써 다양한 모듈에서 추상화를 유지할 수 있게 해주고 기존 클라이언트에 영향을 주지 않고 기본 구현을 변경할 수 있다는 장점이 있다고 작성되어 있습니다. 아래 코드에 작성되어 있는 예제에서 TypeWithSubject 의 경우 실제 유형인 Passthr.. 더보기