Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[item18] 위임(delegation) #15

Open
KimJeongHoon3 opened this issue Mar 12, 2023 · 3 comments
Open

[item18] 위임(delegation) #15

KimJeongHoon3 opened this issue Mar 12, 2023 · 3 comments

Comments

@KimJeongHoon3
Copy link
Collaborator

p119의 중간에

단, 엄밀히 따지면 래퍼 객체가 내부 객체에 자기 자신의 참조를 넘기는 경우만 위임에 해당한다

이렇게 위임에 대한 설명이 나오는데, 이해가 잘 안가네요ㅠ 래퍼객체가 내부객체를 대신 호출해주는 정도로 위임을 생각했는데, 위의 이야기에선 자기 자신의 참조를 넘기는게 위임이라 설명해주는데("엄밀히" 따졌을때 한정..), 위임에 대해 어떤 예제코드가 있을 수 있을까요..?

@pjhsk113
Copy link
Collaborator

확실히는 모르겠는데.. 찾다보니 아래의 클래스들이 비스무리하게(자신의 참조를 넘기게) 구현되어있는 것 같아 공유드립니다.
ObjectInputStream -> BlockDataInputStream -> DataInputStream, FilterInputStream

같이 분석해보아요~!

@HwangSeonHo
Copy link
Collaborator

예전에 로그 남길 때 request 안에 stream이 이미 읽은 상태로 넘어와서
로그에 필요한 내용을 남기지 못하는 경우가 있었는데,
이 request를 읽기 전에 request 타입을 상속받은 커스텀 request를 만들고 새로운 필터로 감싸면서
거기서 상위의 request를 상속 받아서 stream을 가져오고 복사해서 넣어두고 계속 읽을 수 있게 했던 적이 있었습니다.
거기서 상속대신 컴포지션을 했다면 이 내용에 맞는 내용일 것 같네요

@makga87
Copy link
Collaborator

makga87 commented Mar 15, 2023

흠, 이 부분은 사내 리포지토리가 아닌 곳이어서 예제를 올리기 어렵습니다만, 이번에 비슷하게 쓴 코드가 있네요

맞는지는 아리송~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants