동적으로 객체에 부가적인 책임을 더하는 패턴. 상속으로 확장하는 것이 아닌, 객체들의 결합으로 역할을 확장한다. 특히 원본 코드에 영향을 주지 않고 기능을 추가할 수 있다!!! 하지만 각 데코레이터마다 클래스를 만들어줘야 한다. 그래서 같은 기능을 서로 다른 여러 클래스에 적용하려면 매번 새로운 클래스를 만들어 줘야 한다.(이를 해결하기 위한 동적 프록시도 존재한다.)
데코레이터 패턴과 프록시 패턴 같은 역할을 하는 객체를 추가해서 원래 협력하던 객체를 감싸서 대신 협력에 참여하도록 한다. 이 두 패턴의 구현은 매우 비슷하지만 의도에 따라서 구분할 수 있다. 감싸는 객체를 통해 기능을 추가하고 싶은 경우는 데코레이터 패턴, 감싸는 객체를 통해 접근 제어를 하는 경우는 프록시 패턴이라고 한다.
배운 내용 확인하기
클래스들은 코드 수정없이 새로운 동작과 협동할 수 있도록 확장되어야 한다.
기존의 음료에 첨가물을 추가할 때, 상속으로 새로운 클래스로 만들 필요가 없이, 그냥 데코레이터로 기존 음료를 인수로 전달하면 된다.
Posts
데이터베이스의 인덱스
데이터베이스 인덱스데이터베이스도 컴퓨터의 하드 디스크(HDD, SSD)에 데이터를 쓰거나 적는다. 랜덤 IO와 순차 IO하드 디스크 드라이브에 접근하려면 플래터를 돌려서 데이터가 저장된 위치로 헤더를 이동시켜서 데이터를 읽는다. 랜덤 IO는 읽어야 할 데이터의 위치가
기자재 대여 예약 기능약 랩실 공간 대여 예약 기능으로 확장하기
문제 상황기리기리 프로젝트에서 기자재 대여 반납 기능을 중점적으로 개발하다가 광운대학교 미디어커뮤니케이션 랩실에서는 기자재 뿐만 아니라 랩실도 대여 반납을 할 수 있어야 한다는 피드백을 받았다. 문제는 랩실과 기자재 로직이 상당 부분 비슷하지만 랩실의 대여 로직이 기자
서버 시간대에 의존하지 않는 데이터 구현하기
문제 상황기리기리 서비스는 대여 서비스라서 대여 기간과 실제 대여 수령 날짜, 대여 반납 날짜가 중요하다. 문제는 서버 시간대 설정에 따라 실제로 의도한 시간이 맞지 않을 수 있게 된다는 점이다. 그래서 서버를 한국 시간대로 모두 설정해주는 일이 필요하다. 이런 문제는
광운대학교 학생 구성원 인증은 어떻게 할까?
문제 상황광운대학교 미디어커뮤니케이션 학부 기자재 대여 웹 서비스를 구현할 때 광운대학교 미디어커뮤니케이션 학생만 사용할 수 있도록 해야한다. 하지만 문제는 광운대학교에서는 Open API를 제공하지 않아서 학생 구성원을 어떻게 확인해야 할 지가 큰 문제였다. 개선 방
페이징 방식에 의존하지 않는 페이지 API 설계하기
요약Rest API의 HATEOAS 원칙을 적용하면 페이징 방식에 의존하지 않는 API를 구현할 수 있다. 첫 페이지에 접근할 수 있는 API만 프론트엔드에게 알려주고 다른 페이지에 접근하는 API는 첫 페이지에 접근하는 API의 응답 데이터에 동적으로 담겨있게 하자.
Pages
소프트웨어 엔지니어링
Software Engineering?개발 운용 유지보수 등 생명 주기 전반을 체계적, 서술적, 정량적으로 다루는 학문 SLDC요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수 하는 과정 요구사항 분석요구사항 유도 : 대화를 통해 요구
Categories
Computer Sciencecomputer-science
Databasecomputer-science/database
Infrainfra
Springspring
Bootspring/boot
Tags
회고회고
Kotlin in Actionkotlin-in-action
운영체제와 정보기술의 원리운영체제와-정보기술의-원리
Clean Softwareclean-software
Software Engineering At Googlesoftware-engineering-at-google