OCP (Open-Closed Principle, 개방폐쇄 원칙) Note 열려 있어야 할 곳(확장)에는 열려 있어야 하고, 닫혀 있어야 할 곳(변경)에는 닫혀 있어야 한다는 원칙. 쉽게 말하자면 확장은 가능하되 변경은 하지 않는 구조로 구성되어야 한다는 원칙이다. 어떻게 만들든 이미 만들어진 코드를 수정하지 않고 상속 받아서 처리하면 OCP가 만족되지 않을까? 그것만으로는 원칙을 지켰다고 말하기는 어려울 것 같다. 객체 지향 5원칙은 개인적인 견해로 개발을 위한 원칙이라기 보다는 설계를 위한 원칙이라 생각한다. 개발 진행 중에 클래스를 수정해야 할 상황이 생겨버렸고, 변경은 하지 않는게 원칙이라고 하니 확장해버리자( = 상속받아서 처리해 버리자). 라는 것은 의도에 맞지 않는 행동이라는 것이다. Log..
ISP(인터페이스 분리의 원칙) Note 인터페이스 분리의 원칙은 기능의 분리로 볼 수 있다. I/O의 기본을 입력과 출력으로 나눈다면 입력이라는 기능과 출력이라는 기능으로 나눌 수 있음을 직관적으로 느낄 수 있다. 이러한 기준은 인터페이스 분리의 원칙에 그대로 적용할 수 있다. 파일의 입력은 Input이라는 인터페이스로 출력은 output이라는 인터페이스로 분리가 가능하다는 뜻이다. 아마도 이렇게 분리된 휼륭한 코드를 본 바 있으리라 생각된다. 자바의 Input, Output API 시리즈가 가장 대표적인 ISP의 표본이지 않을까. 클라이언트가 파일에 Access 하고자 할 때는 입력과 출력을 염두에 둘 것이다. 하지만 대부분의 경우 입력 설계와 출력 설계가 항상 함께이지는 않을 것이고, 사용하지도 않..
http://oauth.net http://hueniverse.com/2007/10/beginners-guide-to-oauth-part-ii-protocol-workflow/ step1 제인(Jane)은 휴가 여행으로 스코틀랜드에 다녀왔다. 2주간의 여행 기간 동안 스코틀랜드의 풍경을 촬영했다. 집으로 돌아온 제인은 사진 중 일부를 친구들과 공유하기 위해 이미지 공유 사이트인 Faji에 로그인하여 개인 계정으로 사진 이미지를 업로드 하였다. step2 친구들과 온라인으로 사진을 공유한 제인은, 그 사진들을 그녀의 할머니에게도 보여주고 싶어졌다. 제인의 할머니는 인터넷을 사용할 줄 모르기 때문에, 제인은 그 사진들을 인화해서 우편으로 보내드려야겠다고 생각했다. 그래서 평소 즐겨 애용하던 사진 인화 사이트..
인증(Authentication) 자신이 누구라고 주장하는 사람의 주체(principal, "주체"는 보통 사용자를 의미하며, 애플리케이션을 사용하는 장비나 시스템이 될 수도 있다)를 확증하는 절차 인가(Authorization) 주체가 해당 애플리케이션 기능을 사용할 수 있도록 허용되었는지를 결정하는 프로세스 주체의 신원이 인증을 거쳐 이미 확증되어 있어야 한다 Security Interceptor (보안검사자) 권한 확인이 필요한 지점에서 요청에 대한 인증 및 인가를 검사한다 Authentication Manager (인증담당자) 사용자 정보(UserDetails)의 목록에서 주체(Principal)의 신원증명(Credentials)이 일치하는지 검사한다 Authorization Manager (인가..