MVC 패턴 (Model-View-Controller Pattern)
·
Computer Science/Design Pattern
1. MVC 패턴 (Model-View-Controller Pattern)- 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 패턴- 애플리케이션의 구성 요소를 세가지 역할로 구분하여 개발 프로세스에서 각각의 구성 요소에만 집중해서 개발함2. 모델(Model), 뷰(View), 컨트롤러(Controller)- 모델(Model)애플리케이션의 데이터인 데이터베이스, 상수, 변수 등 > 데이터와 관련된 로직 담당애플리케이션의 상태를 관리하고, 데이터를 처리하는 비즈니스 로직을 담당View나 Controller에서 요청을 처리 > 데이터를 저장, 변경 작업Model은 View나 Controller와 독립적 >> ***화면에 표시되는 방법이나 사용자 인터페이스와 무관ex) 사용자 데이터..
노출모듈 패턴(Revealing Module Pattern)
·
Computer Science/Design Pattern
1. 노출모듈 패턴(Revealing Module Pattern)- 내부 구현은 숨기고, 외부에 공개할 함수만 명확하게 드러내는 패턴- 주로 JavaScript에서 사용된다.- JavaScript는 파일마다 스코프가 분리되지 않기 때문에, 변수/함수 은닉과 공개를 명확히 구분하기 때문2. JavaScript에서의 노출모듈 패턴 예제const BankAccount = (function() { // private 변수 let balance = 0; // private 함수 function logBalance() { console.log("현재 잔액:", balance); } // public 함수 정의 function deposit(amount) { balance += amount; ..
이터레이터 패턴(Iterator Pattern)
·
Computer Science/Design Pattern
1. 이터레이터 패턴(Iterator Pattern)- 컬렉션(Collection) 객체(=리스트, 배열 등)의 요소들에 순차적으로 접근할 수 있도록 인터페이스를 제공하는 디자인 패턴- 컬렉션의 내부 구조를 노출 시키지 않고도 외부에서 그 요소들을 순차적으로 접근, 처리 가능2. 이터레이터 패턴의 구성 요소1. IteratorIterator 인터페이스는 컬렉션에서 요소를 순차적으로 접근할 수 있는 메서드를 제공ex) hasNext(), next()2. ConreteIteratorIterator 인터페이스를 구현한 클래스컬렉션의 실제 요소들을 순차적으로 반환하는 역할3. Aggregate( or Collection)이터레이터를 생성하는 역할컬렉션 자체는 이터레이터를 통해 접근할 수 있는 요소들을 보유하고 ..
프록시 패턴(Proxy Pattern)
·
Computer Science/Design Pattern
1. 프록시(Proxy)- 대리자를 의미한다- 실제 객체나 서버 대신에 요청을 받아 대신 처리하거나, 그 요청을 전달하는 역할을 하는 중간 객체- 즉, 대리인처럼 실제 작업을 대신하는 객체이다 ~!2. 프록시를 사용하는 이유1. 접근 제어: 어떤 객체에 대한 접근을 제어하고, 필요 시에 권한을 검사할 수 있다2. 성능 최적화: 실제 객체가 무겁거나 시간이 많이 걸릴 경우, 프록시가 작업을 지연시키거나 캐싱하는 방법이 있다3. 로깅과 보안: 실제 객체가 호출되기 전에 요청을 로깅하거나, 보안 처리를 할 수 있다.4. 리모트 객체: 네트워크를 통해 접근할 수 없는 객체를 마치 로컬 객체처럼 사용할 수 있게 해준다.3. 프록시 패턴(Proxy Pattern)- 대리 객체(Proxy)를 통해 실제 객체에 접근하..
옵저버 패턴(Observer Pattern)
·
Computer Science/Design Pattern
1. 옵저버 패턴(Observer Pattern)주체가 어떤 객체의 상태 변화를 관찰하다가 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴.객체 간의 1:N 관계를 설정해서, 한 객체의 상태 변화가 발생하면 이를 의존하는 객체들에게 자동으로 알림을 보내는 패턴.즉, 누가 변하면 자동으로 알려준다 ~2. Java의 옵저버 패턴 예시import java.util.ArrayList;import java.util.List;// 옵저버 인터페이스 (Observer)interface Observer { void update(String videoTitle);}// 유튜브 채널 (Subject)class YouTubeChannel { private List..
전략 패턴(Strategy Pattern)
·
Computer Science/Design Pattern
1. 전략 패턴(Strategy Pattern)- 정책 패턴(Policy Pattern)이라고도 한다.- 객체의 행위를 바꾸고 싶은 경우 '직접' 수정하지 않고 '전략'이라고 부르는 '캡슐화한 알고리즘'을 컨텍스트안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴.- 즉, 어떤 기능을 수행하는 여러 가지 방법(전략)이 있을 때, 실행 시점에서 적절한 전략을 선택하여 사용할 수 있도록 설계하는 패턴.2. Java의 전략 패턴 예시 코드// 1. 전략(Strategy) 인터페이스interface PaymentStrategy { void pay(int amount);}// 2. 다양한 전략(결제 방법) 구현class CreditCardPayment implements PaymentStrategy { ..
팩토리 패턴(Factory Pattern)
·
Computer Science/Design Pattern
1. 팩토리 패턴(Factory Pattern)- 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴.- 상속 관계에 있는 두 클래스에서 상위 클래스(부모 클래스)가 중요한 뼈대 결정.- 하위 클래스(자식 클래스)에서 객체 생성에 관한 구체적인 내용 결정.2. JavaScript의 팩토리 패턴class CoffeeFactory { static createCoffee(type) { const factory = factoryList[type]; return factory.createCoffee(); }}class Latte { constructor() { this.name = 'latte'; }}class Espresso { constructor() { this.n..
싱글톤 패턴(Singleton Pattern)
·
Computer Science/Design Pattern
1. 디자인 패턴소프트웨어 설계 시 반복적으로 발생하는 문제들을 해결하기 위한 일반적인 해결책이다.이는 코드에서 반복되는 설계 문제를 해결하기 위한 청사진으로 볼 수 있다. 2. 싱글톤 패턴(Singleton Pattern)- 특정 클래스의 인스턴스를 오직 하나만 생성.- 인스턴스를 전역적으로 접근할 수 있도록 하는 디자인 패턴.- 프로그램 전체에서 동일한 객체를 공유하여 메모리 낭비를 방지, 데이터 일관성 유지.- 보통 데이터베이스 연결 모듈에 많이 사용.3. JavaScript의 싱글톤 패턴class Singleton{ constructor(){ if(!Singleton.instance){ Singleton.instance = this } return Singleton.in..