2023/07/30 2

Stream의 개념을 설명할 수 있나요? (의역)

"Stream"이라는 단어는 실제로 그걸 사용할때 전달하고자하는 의미와 비슷해서 선택된 것입니다. 그냥 다 잊어버리고, 물줄기(Water stream)에 대해서 생각해봅시다. 강에 흐르는 물처럼, 우리는 흐르는 데이터를 받을 수 있습니다. 이 데이터가 어디서 왔는지 알 필요는 없죠. 이게 파일에서 오든, 소켓에서 왔든, 다른 어떤 것이든...정말 알 필요가 없습니다. 뭐 물을 받을 때도 마찬가지입니다. 이 물이 호수에서 오든, 분수에서 왔든간에 알 필요가 없습니다. 즉, 이 데이터가 어디서 왔는지 관계없이 데이터를 받는데에만 신경을 쓰게된다는 겁니다. 데이터의 흐름이 추상화된 것이 "Stream"이라는 것이죠. int ReadInt(StreamReader reader) { return Int32.Pars..

메멘토 패턴 (Memento Pattern): Rust로 구현

메멘토는 세부 구현을 드러내지 않으면서 객체의 이전 상태를 복원하고, 저장할 수 있게 해주는 디자인 패턴이다. 문제 간단한 텍스트 편집기를 개발한다고 가정해보자. 상태 스냅샷을 만드는것을 간단히 생각해보면, 저장소에 모든 필드들을 저장소에 저장하는 것을 생각할 수 있다. 하지만 아래와 같은 문제들이 있을 수 있다. 캡슐화로 인해 모든 필드들에 접근할 수 없을지도 모른다. 나중에 텍스트 편집기 클래스를 리팩토링하거나 일부 필드를 추가/제거 한다고 했을때 상태 복사를 담당하는 클래스도 같이 변경해야하는 번거로움이 생긴다. 상태를 저장 및 복원하기 위해 스냅샷도 필드들을 모두 열어놓아야(public)한다. 솔루션 메멘토 패턴은 앞에서 생각했던 것 처럼 다른 객체가 외부에서 에디터의 상태를 복사하려고 시도하는 ..