프로그래밍/- Java,Spring 초격차 교육
design 패턴 , HTTP
즐겁게 하하하
2022. 2. 2. 10:10
728x90
Maven이란?
아파치 메이븐은 자바용 프로젝트 관리 도구.
아파치 앤트의 대안으로 만들어짐.
아파치 라이센스로 배포되는 오픈 소스 소프트웨어
=> 프로젝트를 진행하면서 사용하는 수 많은 라이브러리들을 관리해주는 도구.
( 라이브러리들과 연관된 라이브러리들 까지 거미줄처럼 다 연동이 되어서 관리가 됨,
즉 메이븐은 네트워크를 통해서 연관된 라이브러리까지 같이 업데이트를 해줌)
Gradle이란?
기본적으로 빌드 배포 도구.
안드로이드 앱 공식 빌드 시스템.
빌드 속도가 maven에 비해 10~100배 가량 빠름.
JAVA, C/C++, Python등을 지원.
빌드툴인 Ant Builder와 그루비 스크립트를 기반으로 구축
=> 라이브러리 관리, 프로젝트 관리, 단위 테스트 시 의존성 관리.
(기존 Ant의 역할과 배포 스크립트의 기능을 모두 사용 가능)





디자인 패턴 : 객체를 생성하는것과 관련
- SingleTon : instance , singleton() , getInstance()
클래스(객체)가 유일하게 1개만 존재할때
서로 자원을 공유할때
TCP Socket 통신에서 서버와 연결된 connect 객체
- Builder
- Chanining
구조패턴 : 자료구조나 인터페이스 구조 등 프로그램 구조를 설계하는데 활용
- Adapter : 호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용이 가능하게함
- Decorator : 기존 클래스는 유지하되 이후 필요한 형태로 꾸밀때 사용
- Facade : 건물 앞 정면 이라는뜻
여러 객체와 실제 사용하는 서브 객체 사이에 의존 관계가 있을때
중간에 facade 객체를 두고 여기서 제공하는 interface만을 활용하여
기능을 사용하는 방식
- Proxy : 대리인 이라는 뜻
실제 client는 Proxy로 부터 결과를 받는다.
Cache 기능으로도 활용이 가능하다.
행위 패턴 : 반복적으로 사용되는 객체들의 상호작용을 패턴화
- Observer : 관찰자 패턴은 변화가 일어났을때, 미리 등록된 다른 클래스에 통보하는 패턴
- Strategy : 객체 지향의 꽃
유사한 행위들을 캡슐화 하여, 객체의 행위를 바꾸고 싶은 경우
직접 변경하는 것이 아닌 전략만 변경하여 유연하게 확장
Rest - 네트워크 아키텍처
1. 클라이언트와 서버가 독립적으로 분리
2. 요청에 대해 클라이언트 상태 저장x
3. 클라이언트는 서버 응답을 cache( 임시저장 ) 할수 있어야 한다.
4. 서버와 클라이언트 사이는 계층 형태로 구성, 확장 가능해야.
5. 인터페이스 일관성 지키고 , 아키텍쳐 단순화 하여 작은 단위로 분리하여
클라이언트 , 서버가 독립적으로 개선될수 있어야 한다.
6. 자바 애플릿, 자바스크립트 등 특정한 기능을 서버로부터 클라이언트가 전달받아
코드를 실행할 수 있어야 한다.




URI 설계 원칙
1. /는 계층관계를 나타낼때 사용
2. 마지막엔 / 금지
3. _ 금지
4. -은 가독성을 높일때 사용
5. 소문자를 사용
6. 파일 확장자 포함 금지 : .java
7. 의존적인 경로 사용하지 않는다. : servlet
8. 세션id 포함 금지
9. method명 사용금지
10. 단수형 보다 복수형 : classes
11. 경로중 변하는 부분은 유일값으로 대체 : {lesson-id}
12. crud 기능 표현하는것 금지 : read
13. API에 있어서 서브 도메인은 일관성 있게 사용
HTTP


728x90