전체 글 (88) 썸네일형 리스트형 4. 컴포지트 패턴 (Composite Pattern) 목차 1. 컴포지트 패턴 (Composite Pattern) 이란? 2. 컴포지트 패턴 구조 3. 예제 컴포지트 패턴 (Composite Pattern) 이란? 컴포지트 패턴의 예시로 폴더와 파일이 있습니다. 폴더와 파일은 서로 다르지만 모두 폴더안에 넣을 수 있다는 공통점이 있습니다. 이러한 공통점을 이용하여 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 할 수 있게 도와주는 패턴이 컴포지트 패턴입니다. 컴포지트 패턴 구조 이름 내용 Item File 과 Folder 를 동일시하는 추상 클래스 Folder 폴더를 나타내는 클래스 File 파일을 나타내는 클래스 Main 메인 클래스 예제 Item 추상클래스 Item 추상클래스는 기본적인 것만제공하고 나머지는 Folder 와 File 클래스 에서.. controller 호출 전 Request body 값 읽기 상황 모든 api 요청에 대한 로그를 남겨야 한다. 이때 파라미터 값, 즉 body 에 들어있는 값도 저장해야한다. 문제 filter 나 interceptor 로 request 객체의 body 에 접근하여 데이터를 읽어 오려고 하였다. 이때 getReader 나 getInputStream 을 사용하여 body 의 데이터를 읽어왔는데 java.lang.IllegalStateException: getReader() has already been called for this request 와 같이 이미 읽은 데이터라는 에러가 등장하였다. 에러의 원인은 getReader를 사용하면 request body 를 읽기 위한 스트림을 반환하고, 읽는 동안 내부적으로 포인트를 사용하여 읽은 위치를 기억하고, 두번째 부터.. 3. 어댑터 패턴 (Adapter Pattern) 목차 1. 어댑터 패턴 (Adepter Pattern)이란? 2. 어댑터 패턴 구조 3. 예제 어댑터 패턴 (Adepter Pattern)이란? 220v 에서 작동하는 가전제품을 110v 에서 작동하도록 하려면 어떻게 해야할까요? 바로 110v 어댑터를 사용하는 것입니다. 이처럼 어댑터 패턴은 호환되지 않는 인터페이스를 가진 객체들이 협업할 수 있도록 해주어 기존의 코드를 수정하지 않고 재사용 할 수 있도록 도와주는 구조적 디자인 패턴입니다. 어댑터 패턴 구조 이름 내용 Animal 새롭게 만들어진 추상클래스 Dog Animal을 상속받은 강아지 클래스 Cat Animal을 상속받은 고양이 클래스 Tiger 기존 코드 TigerAdapter Animal과 연결을 도와줄 Adapter 클래스 Animal .. 2. 싱글톤 패턴 (Singleton Pattern) 목차 1. 싱글톤 패턴이란? 2. 싱글톤 패턴 구조 3. 예제 4. 추가 고려사항 싱글톤 패턴 (Singleton Pattern) 이란? 싱글톤 패턴은 클래스의 인스턴스가 단 하나만을 필요로 할때 해당 클래스의 인스턴스가 '반드시' 1개 밖에 존재하지 않는 것을 '보증' 하고 싶을때 사용하는 디자인 패턴 입니다. 싱글톤 패턴 구조 이름 내용 Singleton 인스턴스가 1개만 존재해야하는 클래스 Main 메인 클래스 예제 Singleton 클래스 instance 필드를 가지고 getInstance 를 통해 객체를 생성합니다. 그리고 생성자를 private 로 하여 new 키워드로 생성하는것을 막아줍니다. 만약 해당 객체 값이 null 이면 객체를 생성해주고 해당 객체를 저장합니다. 이후 객체를 생성하려고.. 1. 반복자 패턴 ( Iterator Pattern ) 목차 1. 반복자 패턴이란? 2. 반복자 패턴 구조 3. 예제 반복자 패턴 - Iterator pattern 이란? 배열 arr의 모든 요소를 표시하기 위해서는 아래와 같이 for 문을 사용하여 표시할 수 있습니다. for(int i=0; i [Vue] 네비게이션 가드 / Navigation Guards 소개 네비게이션 가드는 주로 리디렉션 하거나 취소하여 네비게이션을 보호하는 데 사용된다. 네비게이션 가드를 설정하는 방법에는 전역, 라우트 내부, 컴포넌트 내부가 있다. 전역 가드 const router = new VueRouter({ ... }) router.beforeEach((to, from, next) => { // ... }) 각 route 들이 호출될 때마다 실행되는 네비게이션 가드 입니다. to : 대상 Route 객체 from : 현재 Route 객체 next : 훅을 해결하기 위한 함수 next() 다음 훅으로 이동 next(false) 현재 네비게이션 중단, from 경로의 URL로 재설정 next('/') or next({ path : '/' }) 해당 위치로 리디렉션 next(err.. [Vue js] dynamic component, 원하는 컴포넌트 호출하기 + defineAsyncComponent() 개요 하나의 route 를 가지고 동적으로 컴포넌트 변경하기 Component 태그와 computed 활용 1. route 등록 동적 라우트 매칭을 통해 하나의 컴포넌트에 동적인 path를 받을 수 있도록 설정해 줍니다. const router = createRouter({ history: createWebHistory(), routes: [ { path: '/', redirect: '/main' }, { path: '/main', name: 'main', component: () => import('../components/DefaultView.vue'), children: [ { path: '/main/:param1/:param2', // 동적 라우트 매칭 name: 'content', compone.. VS Code 디렉토리 폴더구조 바꾸는 방법 Visual Studio Code 에서 폴더 추가시 " / " 가 붙는 경우 해결하는 방법 settings에 들어간다. 단축키 ( ctrl + , ) Search settings에 explorer.compactFolders 입력 체크박스 해제 끝 이전 1 ··· 3 4 5 6 7 8 9 ··· 11 다음