etc. (8) 썸네일형 리스트형 [Programming Paradigm] 선언형, 함수형, 객체지향, 절차형 프로그래밍 개발 방법론 정리프로그래밍에는 다양한 패러다임(Paradigm)이 존재하며, 각각의 철학과 구현 방식이 다릅니다. 이번 글에서는 대표적인 개발 방법론들을 간단한 코드 예제와 함께 정리해보았습니다. 1. 선언형 프로그래밍 (Declarative Programming)정의: “프로그램은 함수로 이루어진 것이다” 라는 철학이 담긴 프로그래밍 패러다임입니다.특징: 무엇을 할 것인지를 설명합니다. 어떻게 할지는 중요하지 않습니다. 2. 함수형 프로그래밍 (Functional Programming)선언형 프로그래밍의 일종입니다.순수 함수를 조합하여 로직을 구성하고, 고차 함수를 통해 재사용성과 추상화를 극대화합니다.JavaScript에서는 함수가 일급 객체이기 때문에 함수형 스타일을 유연하게 적용할 수 있습니다.c.. [Design Pattern] MVC & MVP & MVVM MVC(Model View Controller) : 애플리케이션의 구성 요소를 세가지 역할로 구분하여 개발하여 재사용성과 확장성이 용의함 Model : 애플리케이션의 데이터인 DB, 상수, 변수 등View : inputbox, checkbox 등 사용자 interface 요소Controller : 하나 이상의 모델과 하나 이상의 뷰를 잇는 다리 역할, event 등 메인 로직을 담당하며 모델과 뷰의 생명 주기를 관리함=> 대표적인 MVC 패턴은 Spring이 있음 MVP(Model View Presenter) : View와 Presenter는 1:1 관계이므로 MVC 패턴보다 더 강한 결합을 가짐 MVVM(Model View ViewModel) : Controller대신 View Model을 사용Vie.. [Design Pattern] 이터레이터 패턴(Iterator Pattern) & 노출모듈 패턴(Revealing module Parttern) 이터레이터 패턴(Iterator Pattern) : iterator를 사용하여 컬랙션의 요소들에 접근하는 디자인 패턴> 이터레이터 프로토콜 : 이터러블한 객체들을 순회할 때 쓰이는 규칙> 이터러블한 객체 : 반복 가능한 객체로 뱁열을 일반화한 객체여러가지 자료형의 구조와는 상관 없이 iterator라는 하나의 인터페이스로 순회 가능 EX) JavsScript에서의 Iteratorconst 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)=> mp은 Map, st.. [Design Pattern] 프록시 패턴(Proxy Pattern) 프록시 패턴(Proxy Pattern) : 대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 해당 접근을 필터링하거나 수정하는 등의 역할을 하는 계층이 있는 패턴객체의 속성, 변환 등을 보완함보안, 데이터 검증, 캐싱, 로깅에 사용프록시 객체나 프록시 서버로 활용> 프록시 서버에서의 캐싱 : 캐시 안에 정보를 담아두고 , 캐시 안에 있는 정보를 요구하는 요청에 대해 다시 저 멀리 있는 원격 서버에 요청하지 않고 캐시 안에 있는 데이터를 활용 프록시 서버(Proxy Server) : 서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램 EX) nginx Proxy ServerNginx란?Nginx(Engine-X.. [Design Pattern] 옵저버 패턴(Observer Pattern) 옵저버 패턴(Observer Pattern) : 주체가 객체의 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 패턴> 주체 : 객체의 상태 변화를 보고 있는 관찰자> 옵저버 : 객체의 상태 변화에 따라 전달되는 메서드 등을 기반으로 '추가 변화 사항'이 생기는 객체들을 의미MVC(Model-View-Controller) 패턴에 사용됨model(주체)에서 변경사항이 생겨 update() 메서드를 view(옵저버)에 알려주고 이를 기반으로 controller 작동 EX) Java에서의 Observer1. Subject interfaceinterface Subject { void register(Observer obj); void unregister(Obs.. [Design Pattern] 전략 패턴(Strategy Pattern) / 정책 패턴(Policy Pattern) 전략(정책) 패턴(Strategy Pattern) : 행위를 직접 수정하지 않고 캡슐화한 알고리즘(전략)을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴> 컨텍스트 : 상황, 맥락, 문맥을 의미하며 개발자가 어떠한 작업을 완료하는데 필요한 모든 관련된 정보를 말함. EX) Java에서의 Strategy : 네이버페이 결제와 카카오페이 결제 등 결제 방식의 전략을 바꿔서 구현1. PaymentStrategy : 전략 인터페이스import java.text.DecimalFormat;import java.util.ArrayList;import java.util.List;interface PaymentStrategy { public void pay(int amount);}=> 행위의 공통 구.. [Design Pattern] 팩토리 패턴(Factory Pattern) 팩토리 패턴(Factory Pattern) : 객체 생성 로직을 캡슐화하여, 클라이언트 코드가 구체적인 클래스에 직접 의존하지 않도록 도와주는 패턴상위 클래스와 하위 클래스가 분리되기 때문에 느슨한 결합을 가짐상위 클래스에서는 인스턴스 생성 방식에 대해 전혀 알 필요가 없어서 많은 유연성을 갖게 됨유지 보수성 증가 EX) JavaScript에서의 Factoryclass CoffeeFactory { static createCoffee(type) { const factory = factoryList[type] return factory.createCoffee() }}class Latte { constructor() { this.name = "latte" .. [Design Pattern] 싱글톤 패턴(Singleton Pattern) 싱글톤 패턴(Singleton Pattern) : 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴> 인스턴스(Instance) : 클래스를 기반으로 실제로 만들어진 객체 EX) JavaScript에서의 Singletonclass Singleton { constructor() { if(!Singleton.instance) { Singleton.instance = this } return Singleton.instance } getInstance() { return this }}const a = new Singleton()const b = new Singleton()console.log(a === b) //?이때 a .. 이전 1 다음