전체 글 183

[Design Pattern] 7. Facade Pattern

퍼사드 패턴 (Facade Pattern) Facade는 "건물의 정면"을 의미하는 단어로 어떤 소프트웨어의 다른 커다란 코드 부분에 대하여 간략화된 인터페이스를 제공해주는 디자인 패턴을 의미합니다. 퍼사드 객체는 복잡한 소프트웨어 바깥쪽의 코드가 라이브러리의 안쪽 코드에 의존하는 일을 감소시켜 주고, 복잡한 소프트웨어를 사용 할 수 있게 간단한 인터페이스를 제공해줍니다. 동기 어떤 사람이 영화를 보고자 합니다. 영화를 보기 위해서는 다음과 같은 과정을 거치게 됩니다. 음료를 준비한다 -> TV를 켠다 -> 영화를 검색한다 -> 영화를 결제한다 -> 영화를 재생한다. public void view() { Beverage beverage = new Beverage("콜라"); Remote_Control r..

Filter vs Interceptor vs AOP

👋 들어가기 전 Filter Interceptor AOP 세가지 기능이 모두 비슷한 기능을 하는데, 이들이 필요한 이유는 프로그램을 만들거나 작업을 할 때 공통되는 부분이 굉장히 많다. 예를 들어, 인증 처리라던지, XSS로부터 보안 처리, 로깅 처리, 페이지 인코딩도 포함될 것이다. 이렇게 프로그램 내에서 자주 사용되는 기능을 소스 여러 군데에 사용되고 있으면 소스 양도 늘어날 것이고, 프로젝트 단위가 커질수록 서버에 대한 부하, 유지보수에 어려움을 겪을 수 있다! 쉽게 말해서 공통되는 부분은 빼서 관리하는게 좋다. 위와 같이 공통되는 기능을 처리해주는 기능을 Spring이 제공한다. 위 세가지 기능에 대해 알아보고, 차이점들을 알아보자! Filter, Interceptor, AOP의 흐름 서버를 실행..

개념.log/Spring 2021.08.14

[Design Pattern] 6. Adapter Pattern

Adapter Pattern **Structural Pattern** 프로그램 구조에 관련된 패턴들 프로그램 내의 자료구조나 인터페이스 구조 등 프로그램의 구조를 설계하는데 활용할 수 있는 패턴들 어댑터 패턴이란? 한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 어댑터 패턴 호출 과정 클라이언트에서는 Target Interface 를 호출하는 것 처럼 보인다. 하지만 클라이언트의 요청을 전달받은 (Target Interface 를 구현한) Adapter 는 자신이 감싸고 있는 Adaptee 에게 실질적인 처리를 위임한다. Adapter 가 Adaptee 를 감싸고 있는 것..

[프로그래머스/JAVA] 상호 평가 (위클리 2주차)

문제 설명 대학 교수인 당신은, 상호평가를 통하여 학생들이 제출한 과제물에 학점을 부여하려고 합니다. 아래는 0번부터 4번까지 번호가 매겨진 5명의 학생들이 자신과 다른 학생의 과제를 평가한 점수표입니다. 위의 점수표에서, i행 j열의 값은 i번 학생이 평가한 j번 학생의 과제 점수입니다. 0번 학생이 평가한 점수는 0번 행에담긴 [100, 90, 98, 88, 65]입니다. 0번 학생은 자기 자신에게 100점, 1번 학생에게 90점, 2번 학생에게 98점, 3번 학생에게 88점, 4번 학생에게 65점을 부여했습니다. 2번 학생이 평가한 점수는 2번 행에담긴 [47, 88, 95, 80, 67]입니다. 2번 학생은 0번 학생에게 47점, 1번 학생에게 88점, 자기 자신에게 95점, 3번 학생에게 80점..

코테.log/Java 2021.08.12

[프로그래머스/JAVA] 부족한 요금 계산하기 (위클리 1주차)

문제 설명 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다. 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요. 단, 금액이 부족하지 않으면 0을 return 하세요. 제한사항 놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수 처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,000, money는 자연수 놀이기구의 이용 횟수 c..

코테.log/Java 2021.08.12

[Design Pattern] 5. Decorator Pattern

Decorator Pattern SOLID 중에서 OCP와 DIP를 따른다. 데코레이터 패턴은 기본 객체에 추가적인 기능을 동적으로 유연하게 첨가하는 패턴이다. 객체에 추가적인 요건을 동적으로 첨가하며, 기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 유연한 대안이 될 수 있다. Component ConcreteComponent 와 Decorator 가 구현할 인터페이스다. 두 객체를 동등하게 다루기 위해 존재함 ConcreteComponent Decorate 를 받을 객체다. 즉, 기능 추가를 받을 기본 객체 Decorator Decorate 를 할 객체의 추상 클래스다. 즉, 기능 추가를 할 객체는 이 객체를 상속받는다. ConcreteDecorator Decorator 를 상속받아 구현할 다양한..

[Design Pattern] 4. Observer Pattern

Observer Pattern Head First Design Pattern 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 정보가 자동으로 갱신되는 방식으로, 일대다(one-to-many) 의존성을 정의합니다. 옵저버 패턴은 관찰자 패턴이라고도 합니다. 일대다 관계를 이루고 있으며, 상태가 업데이트되면 모든 옵저버들에게 정보를 갱신할 수 있도록 하는 것을 의미합니다 예시 ) 유튜브 구독 알람 철수(Observer)가 코딩 공부를 위해 유튜브에서 프로그래밍 관련 영상을 찾고 있습니다. 그런데 Luckygg(Subject)라는 사람의 채널에 좋은 영상들이 있는 것을 알게 됐습니다. 하나 둘 개제 된 영상들을 보게 되다가 어느새 모든 영상들을 보게 됐습니다. 이제 새로운 영상이 업데이트되는 것을..

URI 설계 패턴

URI 설계 패턴URI(Uniform Resource Identifier)인터넷에서 특정 자원을 나타내는 주소 값. 해당 값은 유일하다.URL(Uniform Resource Locator)인터넷 상에서의 자원, 특정 파일의 위치를 나타내는 정보URI 설계 시 주의할 점1. 슬래시 구분자(/)는 계층 관계를 나타내는 데 사용http://restapi.example.com/houses/apartmentshttp://restapi.example.com/animals/mammals/whales2. URI 마지막 문자로 슬래시(/)를 포함하지 않는다.URI에 포함되는 모든 글자는 리소스의 유일한 식별자로 사용되어야 하며 URI가 다르다는 것은 리소스가 다르다는 것이고, 역으로 리소스가 다르면 URI도 달라져야 합..

개념.log/REST 2021.08.11

REST

Rest란?Rest ( Representational State Transfer : 자원의 상태 전달 ) - 네트워크 아키텍처INDEX1. REST 구성2. REST 특징3. REST API 디자인 가이드4. HTTP 응답 상태 코드1. REST 구성자원(RESOURCE) - URI행위(Verb) - HTTP METHOD표현(Representations) 2. REST 특징Uniform (유니폼 인터페이스)Uniform Interface는 URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일을 말합니다.Client - Server 구조REST 서버는 API 제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조로 각각의 역할이 확실..

개념.log/REST 2021.08.11

[Design Pattern] 3. Proxy Pattern

Proxy Pattern? OCP, DIP 설계 원칙 실제 기능을 수행하는 객체Real Object 대신 가상의 객체Proxy Object를 사용해 로직의 흐름을 제어하는 디자인 패턴입니다. 어떤 객체를 사용하고자 할때, 객체를 직접적으로 참조 하는것이 아니라, 해당 객체를 대행(대리, proxy)하는 객체를 통해 대상객체에 접근하는 방식을 사용하면 해당 객체가 메모리에 존재하지 않아도 기본적인 정보를 참조하거나 설정할 수 있고 또한 실제 객체의 기능이 반드시 필요한 시점까지 객체의 생성을 미룰 수 있습니다. 예를 들어 용량이 큰 이미지와 글이 같이 있는 문서를 모니터 화면에 띄운다고 가정하였을때 이미지 파일은 용량이 크고 텍스트는 용량이 작아서 텍스트는 빠르게 나타나지만 그림은 조금 느리게 로딩되는 것..

반응형