[CS] 노출모듈 패턴, MVC 패턴, MVP 패턴, MVVM 패턴
CS/CS2022. 9. 20. 21:56[CS] 노출모듈 패턴, MVC 패턴, MVP 패턴, MVVM 패턴

노출 모듈 패턴(Revealing Module Pattern) 이란? - 즉시 실행 함수를 통해 private, public 같은 접근 제어자를 만드는 패턴. - 자바스크립트는 private나 public 같은 접근 제어자가 존재하지 않고 전역 범위에서 스크립트가 실행. ㄴ노출모듈 패턴을 통해 private와 public 접근 제어자를 구현. 코드 위치: ch1/12.js const pukuba = (() => { const a = 1 const b = () => 2 const public = { c : 2, d : () => 3 } return public })() console.log(pukuba) console.log(pukuba.a) // { c: 2, d: [Function: d] } // un..

[CS] 싱글톤 패턴(singleton pattern)
CS/CS2022. 9. 20. 21:56[CS] 싱글톤 패턴(singleton pattern)

싱글톤 패턴(singleton pattern)이란? - 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴. ㄴ 하나의 인스턴스를 만들어 놓고, 해당 인스턴스를 다른 여러 모듈들이 공유하며 사용. 더보기 인스턴스 : 객체지향 프로그래밍에서 어떤 클래스에 속하는 각 객체를 의미. -> 붕어빵 틀 = Class / 각각의 붕어빵 = Instance / 붕어빵 = Object 싱글톤 : 붕어빵 틀로 붕어빵을 하나 만들어서, 여럿이서 그 붕어빵을 보고 따라그리는데 사용. - 주로 데이터베이스 연결 모듈에 많이 사용. - 장점 : 인스턴스를 생성 할 때 드는 비용이 줄어듬. (하나의 인스턴스를 만들어 다른 모듈들이 그 인스턴스 사용) - 단점 : 의존성이 높아짐. 1. 자바스크립트의 싱글톤 패턴 - 리터럴 {} ..

CS/CS2022. 9. 20. 21:56[CS] 전략 패턴(strategy pattern, 정책 패턴(policy pattern)

전략 패턴(strategy pattern)이란? - 객체의 행위를 바꾸고 싶은 경우 '직접 수정하지 않고' 전략이라고 부르는 '캡슐화한 알고리즘'을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴. 더보기 컨텍스트 : 프로그래밍에서 상황, 맥락, 문맥을 의미하며 개발자가 어떤 작업을 완료하는데 필요한 모든 관련정보를 말함. //전략 패턴 예시 변화되는 로봇의 이동방식, 공격방식을 캡슐화 하여 필요할 때마다 변경이 가능하게 함. // 로봇 클래스 public abstract class Robot { private String name; private MovingStrategy movingStrategy; private AttackStrategy attackStrategy; public Robo..

[CS] 프록시 패턴(proxy pattern)
CS/CS2022. 9. 20. 21:56[CS] 프록시 패턴(proxy pattern)

프록시 패턴(proxy pattern)이란? - 대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 객체 앞단의 인터페이스 역할을 하는 디자인 패턴 ㄴ 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 사용. 더보기 프록시 서버에서의 캐싱 : 캐시 안에 정보를 담아두고, 캐시 안에 있는 정보를 요구하는 요청에 대해 다시 저 멀리 있는 원격 서버에 요청하지 않고 캐시 안에 있는 데이터를 활용하는 것을 말함. 불필요하게 외부와 연결하지 않기 때문에 트래픽을 줄일 수 있음. //프록시 코드 예시 package com.programmers.java.proxyPattern; public interface Subject { String request(); } package com.progra..

CS/CS2022. 9. 20. 21:56[CS] 이터레이터 패턴(iterator pattern)

이터레이터 패턴(iterator pattern)이란? - 이터레이터(반복자)를 사용하여 컬렉션의 요소들에 접근하는 디자인 패턴 ㄴ 여러가지 자료형의 구조와는 상관 없이 이터레이터라는 하나의 인터페이스로 순회 가능. 더보기 이터러블한 객체 : 반복 가능한 객체로 배열을 일반화한 객체 const mp = new Map() mp.set('a', 1) mp.set('b', 2) mp.set('c', 3) const st = new Set() st.add(1) st.add(2) st.add(3) for (let a of mp) console.log(a) for (let a of st) console.log(a) /** * ['a', 1] * ['b', 2] * ['c', 3] * 1 * 2 * 3 */ ㄴ다른 자..

CS/CS2022. 9. 20. 21:56[CS] 프로그래밍 패러다임(Programming paradigm)

프로그래밍 패러다임(Programming paradigm)이란? - 프로그래머에게 프로그래밍의 관점을 갖게 해주는 개발 방법론. - 선언형 - 함수형 | 명령형 - 객체지향, 절차지향 으로 나뉨 선언형과 함수형 프로그래밍 1) 선언형 프로그래밍(declarative programming) : ㄴ ‘무엇을’ 풀어내는가에 집중하는 패러다임. “프로그램은 함수로 이루어진 것이다.”라는 명제가 담겨 있는 패러다임 2) 함수형 프로그래밍(functional programming) : 선언형 패러다임의 일종 ㄴ 작은 ‘순수 함수’들을 블록처럼 쌓아 로직을 구현하고 ‘고차 함수’를 통해 재사용성을 높인 프로그래밍 패러다임 자바스크립트는 단순하고 유연한 언어이며, 함수가 일급 객체이기 때문에 객체지향 프로그래밍보다는 ..

[CS] 팩토리 패턴(factory pattern)
CS/CS2022. 9. 20. 21:55[CS] 팩토리 패턴(factory pattern)

팩토리 패턴(factory pattern)이란? - 상속관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정, 하위 클래스가 객체 생성에 관한 구체적인 내용을 결정하는 패턴 - 즉, 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴 - 상위 클래스와 하위 클래스가 분리되어있음 ㄴ결합이 느슨함. ㄴ 상위 클래스의 유연성 증가 : 상위클래스가 인스턴스의 생성 방식에 대해 알 필요가 없기 때문. ㄴ 유지보수성 증가(코드를 리팩터링 하더라도 한 곳만 고치면 됨) : 객체 생성 로직이 따로 떨어져있기 때문. 1. 자바스크립트의 팩토리 패턴 - new Object()로 구현 가능. ㄴ 숫자를 전달하거나 문자열을 전달함에 따라 다른 타입의 객체를 생성함. 즉, 전달받은 값에 따라 다른 객체를 생..

CS/CS2022. 9. 20. 21:55[CS] 디자인 패턴이란?

디자인 패턴(Design pattern) 이란? - 프로그램을 설계 할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이요해 해결 할 수 있도록 하나의 규약 형태로 만들어 놓은 것. ㄴ 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 또 발생했을 때 해결책으로 재사용 가능.(이미 만들어져서 잘 되는 것을, 다시 처음부터 만들 필요는 없다는 것) - 프로그래밍을 할 때 쓰는 React.js, Vue.js, Spring 등 라이브러리나 프레임워크의 기본이라고 할 수 있음. 더보기 라이브러리, 프레임워크 : 공통으로 사용 될 수 있는 특정한 '기능'을 모듈화 한 것. 라이브러리: 폴더명, 파일명 등에 대한 규칙이 없고, 프레임워크에 비해 자유로움 프레임워크: 폴더명, 파일명 등에 대한..

CS/CS2021. 12. 12. 01:15[CS] 캐시(Cache)란?

1. 캐시(Cache)란? 컴퓨터 과학에서 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킴. 1) 캐시의 등장 배경 - 무어의 법칙(Moore's law)에 의해 CPU의 처리속도가 급격히 증가했지만, 메모리 접근 속도는 늘어나지 못함. - 메모리보다는 빠르고 CPU보다는 느린 cache를 메모리와 CPU사이에 위치, CPU의 데이터 접근 시간을 줄임. - 결과가 나올 때마다 메모리에 저장하는 것보다, cache에 저장, 한 번에 메모리를 최신화하는 것이 효율적. 2. 캐시(Cache)의 장단점 1) 캐시(Cache)의 장점 - 캐시에 데이터를 미리 복사해 놓으면, 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근 할 수 있음. - 접근 시간에 비해 원래 데이터에 접근하는 시간이 ..

CS/CS2021. 12. 12. 00:38[CS] 컴파일러(Compiler)란?

1. 컴파일러(Compiler) - 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어 혹은 컴퓨터 언어로 옮기는, 일종의 번역 프로그램. - 비주얼, 터보, 볼랜드 등 언어에 따라 다양한 컴파일러 종류가 존재한다. - 보통 high-level 프로그래밍 언어를 실행 프로그램으로 만들기 위한 lower level언어(ex 어셈블리 언어, object 코드, 등)로 바꾸는 데에 사용 - 원래의 문서를 '소스 코드' 혹은 원시 코드라고 부름 - 출력된 문서를 '목적 코드'라고 부름 1) 컴파일러 실행 단계 (1) 구문 분석 : 소스 코드 파일을 읽어 추상 구문 트리 생성, 문법에 맞지 않는 소스 코드는 사용자에게 알림 (2) 최적화 : 추상 구문 트리 분석 및 최적화. (3) 코드 생성 : 목적 ..

CS/CS2021. 12. 7. 17:18[CS] 코딩 할 때 단어 표기법(camelCase, snake_case, UpperCase .,)

1. camelCase - 단어를 표기 할 때 첫 문자를 소문자로 시작하여, 띄어쓰기 대신 대문자로 단어를 구분. - 변수명과 함수명을 주로 camelCase를 통해 작성한다. 2. snake_case - 단어를 표기 할 때 모든 문자를 소문자로, 띄어쓰기 대신 언더바로 단어를 구분. - API, DB에서 주로 사용한다. 3. UpperCase - 단어를 표기 할 때 단어의 첫 글자만 대문자로 작성.

[CS] 자료구조란? 알고리즘이란?
CS/CS2021. 11. 18. 17:21[CS] 자료구조란? 알고리즘이란?

1. 알고리즘과 자료구조의 관계 자료 구조(Data structure) : 자료를 처리하는 방법 알고리즘(Algorithm) : 문제를 처리하는 절차(입력을 받아 원하는 값으로 출력하는 절차) 1) 알고리즘 : 문제 해결을 위한 처리 절차. - 문제와 컴퓨터가 주어진 상태에서 문제를 해결하는 방법을 정밀하게 장치가 이해 할 수 있는 언어로 기술 한 것. - 0개 이상의 입력, 1개 이상의 출력이 존재 - 명백성 : 각 명령어의 의미는 모호하지 않고 명확해야 함. - 유한성 : 한정된 수의 단계 후에는 반드시 종료되어야 함. - 유효선 : 각 명령어들은 실행 가능함 연산이어야 함. 2) 자료구조 : 데이터를 저장하거나 조직하는 방법. - 데이터로의 접근과 변경을 편리하게 하기 위함. - 자료구조는 언어별로..

image